【发布时间】:2012-07-16 12:47:29
【问题描述】:
在 GNUC C 中,您可以使用typeof(expression),并且在内部使用带有副作用的表达式是合法的。因此,例如,您可以使用以下 C 代码:
int x = 0;
typeof(x++) y;
在这种情况下,副作用被忽略,之后 x 仍然为零(这是有道理的,因为类型只是编译时的东西)。
但是,GCC documentation 说:
计算 typeof 的操作数的副作用 当且仅当它是可变修改类型的表达式 或此类类型的名称。
这句话是什么意思?是否真的可以编写带有副作用的typeof 并在运行时实际执行副作用?对我来说,这句话似乎表明了这一点。
【问题讨论】:
-
@0A0D 那个问题也谈到了
typeof,但没有提到副作用,只有无副作用的表达方式。 -
@PhilippWendler:好问题!