C ++预处理器能否判断令牌是否为字符串?

时间:2012-07-24 03:52:56

标签: c++ macros c-preprocessor

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

例如:

#define IS_STRING(token) ???

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

1 个答案:

答案 0 :(得分:4)

是。但是输出的差异很小:

#define IS_STRING(token) "" token 

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

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

Here is a related discussion