备注:宏连接的无法识别的令牌警告

时间:2014-04-04 06:33:41

标签: c macros concatenation c-preprocessor compiler-warnings

#define DATA_VAR_FILENAME(PROJECT_ID)  QUOTES(..\ ## PROJECT_ID ## _data_var.h)

#define DATA_VAR_FILENAME(PROJECT_ID)  QUOTES(..\##PROJECT_ID##_data_var.h)

对于上面这行我得到了警告

  

备注:无法识别的令牌

如何消除警告?

1 个答案:

答案 0 :(得分:1)

从它的外观来看,它看起来正在尝试在预处理器中编写文件名。这是不可能的,因为形成路径名的字符串不是预处理器的标记。

通常不需要这样的操作。字符串文字在稍后的编译阶段简单地连接得太大的字符串文字。像

这样的东西
"../" "my_file.h"

应该这样做。

您似乎也难以在您的平台上\成为路径分隔符。因此,您必须小心地在字符串文字中将其转义,例如"..\\"