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