c/c++开发分享typeof()表达式中的副作用

在GNUC C中,您可以使用typeof(expression) ,并且使用内部具有副作用的表达式是合法的。 例如,你可以拥有这个C代码:

 int x = 0; typeof(x++) y; 

在这种情况下,副作用被忽略,之后x仍然为零(这是有道理的,因为类型只是编译时的事情)。

但是, 海湾合作委员会的文件说:

当且仅当它是可变修改类型的表达式或这种类型的名称时,才评估typeof的操作数的副作用。

这句话是什么意思? 是否真的可以编写带有副作用的typeof并且实际上在运行时执行副作用? 对我来说,这句话似乎表明了这一点。

    是的,在某些情况下,有可能在评估类型内部产生副作用。 正如文档所说,它需要在“可变修改类型”内。 这是一种取决于某些运行时值的类型,例如int[x]

    因此,以下代码是合法的,声明y为int[1]类型,x后面的值为1:

     int x = 0; typeof(int[++x]) y; 

    当然,对于一般的可变修改类型,这仅对局部变量声明(内部函数)是合法的。

      以上就是c/c++开发分享typeof()表达式中的副作用相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545861.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注