在 GNUC C 中,您可以使用typeof(expression)
,并且在内部使用带有副作用的表达式是合法的。因此,例如,您可以使用以下 C 代码:
int x = 0;
typeof(x++) y;
在这种情况下,副作用被忽略,之后 x 仍然为零(这是有道理的,因为类型是仅编译时的东西)。
但是,GCC 文档说:
当且仅当 typeof 的操作数是可变修改类型的表达式或此类类型的名称时,才评估其副作用。
这句话是什么意思?真的有可能写typeof
一个副作用并让副作用在运行时实际执行吗?对我来说,这句话似乎表明了这一点。