我试图在宏中生成包含文件名。这应该是在C++中的法律:在宏中生成包含文件名
#define INCLUDE_FILE "module_impl_win.hpp"
#include INCLUDE_FILE
这工作正常,但只要我尝试生成的文件名是failes编译
#define INCLUDE_FILE(M) M##"_impl_win.hpp"
#include INCLUDE_FILE("module")
其实它给我的警告上MSVC2010
警告C4067:意外的标记以下预处理器指令 - 预计一纽林
但它不包含该文件。
什么问题?我怎样才能摆脱它?
谢谢,不知道它连接这样的字符串。想象一下,有数百个文件包含#ifdef ... #endif平台特定的头文件。如果明天我会添加对另一个平台的支持,那么我需要编辑所有这些文件,而不是只编辑一个宏并添加平台特定的实现文件。这很伤心。 – ledokol 2011-01-20 06:29:45
@ledokol:为什么特定于平台的功能不能被拆分为单独的头文件和源文件,这些文件不包含在其他地方?应该很容易将平台特定的和依赖于平台的功能整合到相对较小的一组文件中。 – 2011-01-20 06:43:30