在宏中生成包含文件名

2024-01-07

我正在尝试在宏中生成包含文件名。这在 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(使用前将#替换为@)

在宏中生成包含文件名 的相关文章

随机推荐