我正在尝试在宏中生成包含文件名。这在 C++ 中应该是合法的:
#define INCLUDE_FILE "module_impl_win.hpp"
#include INCLUDE_FILE
这工作正常,但是一旦我尝试生成文件名,它就无法编译
#define INCLUDE_FILE(M) M##"_impl_win.hpp"
#include INCLUDE_FILE("module")
实际上它给了我关于 MSVC2010 的警告
警告 C4067:预处理器指令后出现意外标记 - 需要换行符
但它不包括该文件。
问题是什么?我怎样才能摆脱它?
我会使用辅助引用宏来完成此操作。像这样的东西会给你你想要的:
#define QUOTEME(M) #M
#define INCLUDE_FILE(M) QUOTEME(M##_impl_win.hpp)
#include INCLUDE_FILE(module)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)