是否有一个宏使用C预处理器检查表达式是否为lvalue
(meaning I can do &expression
)?
示例:如果有一些int a;
并且我调用IS_LVALUE(a)
它应该评估为1,而IS_LVALUE(5)
应评估为0,所以我可以做#if IS_LVALUE(...) == 1
答案 0 :(得分:11)
没有
因为C预处理器不知道左值是什么,或者任何其他C构造。这是编译器的工作。
你是否使用C ++,你可以使用类型特征,但在C中我恐怕你运气不好。