预处理器宏是否可以确定其参数是否为字符串(文字)?
例如:
#define IS_STRING(token) ???
IS_STRING("foo") // expands to 1
IS_STRING(foo) // expands to 0
答案 0 :(得分:4)
是。但是输出的差异很小:
#define IS_STRING(token) "" token
字符串文字会很好。对于非字符串,它会给编译器错误。
逻辑:编译器会自动连接字符串文字,因此如果"" token
是字符串文字,token
就可以了。