【发布时间】:2019-06-13 07:29:19
【问题描述】:
我正在写一个C编译器(以llvm为后端)进行练习,规则后面是the C11 standard §6.2.4。
在浏览“对象的存储持续时间”部分时,有一个案例让我感到困惑:
¶8 具有结构或联合类型的非左值表达式,其中 结构或联合包含具有数组类型的成员(包括, 递归地,所有包含的结构和联合的成员)指 具有自动存储持续时间和临时生命周期的对象。它的 生命周期从计算表达式及其初始值时开始 是表达式的值。它的生命周期在评估时结束 包含完整表达式或完整声明符的结束。任何尝试 修改具有临时生命周期的对象会导致未定义 行为。
我无法想象这个案例所谈论的情况,尤其是数组成员部分(作为具有临时生命周期的非左值,具有数组成员的结构与正常的非左值有什么区别吗?) 谁能给我一个代码示例来说明这一点?
【问题讨论】: