【发布时间】:2019-07-11 00:44:04
【问题描述】:
这是一个与C标准的defect report 452相关的问题。文档N1888 提供了有关原始问题的更多信息,但我不明白为什么它会说明以下内容:
6.5.p6 中的有效类型规则(描述什么是对象的有效类型的规则)似乎不适用于由逗号表达式产生的具有临时生命周期的对象。因此,它似乎没有有效的类型。 因此,类型双关语似乎是允许的:
long func3() { union u2 o3 = { .x=42 }; return (0, o3).y; }
我的问题是,如果由表达式 (0, o3) 创建的具有临时生命周期的对象没有有效类型,是什么导致类型双关语合法?我相信只有在尝试使用不同类型访问其存储值时,该对象的有效类型才会相关,但我看不出这里是怎么回事。
【问题讨论】:
标签: c language-lawyer type-punning