【发布时间】:2020-11-06 10:30:25
【问题描述】:
有什么方法可以确定给定的表达式是 C 中的左值还是右值?例如,是否存在具有以下行为的函数或宏 is_lvalue:
int four() {
return 4;
}
int a = 4;
/* Returns true */
is_lvalue(a);
/* Returns false */
is_lvalue(four());
我知道 exists in C++ 的等效功能,但是在任何 C 标准中都有什么方法可以做到这一点?我对 GCC 特定的扩展不是特别感兴趣。
感谢您的宝贵时间。
【问题讨论】:
-
不,没有这样的运气。左值相关的上下文数量非常有限。准确地说,这些正是
sizeof、alignof、一元&、++、--和.的操作数。这些都不能用来区分左值和右值。 -
& 可用于生成编译时错误,如果这足够好的话。
标签: c