我正在为练习编写一个C编译器(以llvm作为后端),the C11 standard §6.2.4遵循这些规则。
在阅读“对象的存储持续时间”部分时,有一个案例让我感到困惑:
?8具有结构或联合类型的非左值表达式,其中结构或联合包含具有数组类型的成员(递归地包括所有包含的结构和联合的成员)引用具有自动存储持续时间和临时生存期的对象。它的生存期从计算表达式时开始,其初始值是表达式的值。当包含完整表达式或完整声明符的计算结束时,它的生存期结束。任何试图修改具有临时生存期的对象的行为都会导致未定义的行为。
我不能想象这个案例讨论的情况是什么,特别是数组成员部分(都是具有临时生命周期的非左值,带有数组成员的结构与普通的非左值有什么不同吗?)谁能给我一个代码示例来说明这一点?
https://stackoverflow.com/questions/56575413
复制相似问题