5

预处理器宏是否可以确定其参数是否为字符串(文字)?

例如:

#define IS_STRING(token) ???

IS_STRING("foo")  // expands to 1
IS_STRING(foo)    // expands to 0
4

1 回答 1

4

是的。但输出略有不同:

#define IS_STRING(token) "" token 

字符串文字会很好。对于非字符串,它会给出编译器错误。

逻辑:编译器会自动连接字符串文字,所以"" token如果token是字符串文字就可以了。

这是一个相关的讨论

于 2012-07-24T04:01:44.033 回答