检查表达式是否是预处理器的左值

时间:2015-02-04 21:51:18

标签: c c-preprocessor

是否有一个宏使用C预处理器检查表达式是否为lvaluemeaning I can do &expression)?

示例:如果有一些int a;并且我调用IS_LVALUE(a)它应该评估为1,而IS_LVALUE(5)应评估为0,所以我可以做#if IS_LVALUE(...) == 1

1 个答案:

答案 0 :(得分:11)

没有

因为C预处理器不知道左值是什么,或者任何其他C构造。这是编译器的工作。

你是否使用C ++,你可以使用类型特征,但在C中我恐怕你运气不好。