我試圖在宏中生成包含文件名。這應該是在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