我想确保我传递给gui的资源图像文件在编译时确实存在。比如
load_image(static_assert(!(std::filesystem::exists(pathToFile)), "Resource file " + std::string(pathToFile) + " does not exist"));
这似乎需要std::filesystem::path为constexpr。这是可能的,还是只能通过构建工具来实现?
这样做的目的是在编译时捕获简单的错误,然后再离开我们的办公桌并通过QA过程。
一些人指出,这些文件可能在分发后在用户系统上移动了。这是不正确的,也是不得要领的。是个街机游戏。我们就能完全控制整个系统程序和资源被烘焙到OS中,并且用户不能访问文件来移动任何东西。它忽略了这一点,认为我依赖于此来防止运行时错误。我没有。我试图尽早防止一种类型的错误。这并不是我们试图防止错误的唯一方法。
1条答案
按热度按时间jexiocij1#
尽管注解中提到的警告和注意事项,如果我真的需要使用编译器检查文件的存在,我会滥用预处理器并尝试以下内容:
再说一次,我不确定这是个好主意,但我认为它会起作用。
编辑
正如@user17732522在评论中指出的那样,
__has_include
是C++17的一部分。