C对象的存储布局

Storage layout of C objects

C对象的存储布局大多没有定义。据我所知,只有 struct 个成员和数组元素定义了布局。

有趣的是,对于函数参数,C11 标准明确提到未定义布局:

The layout of the storage for parameters is unspecified. (C11 § 6.9.1 P 9)

我想知道标准是否也明确定义了对于其他对象,例如具有自动存储持续时间的对象,布局是未定义的。有人知道吗?我在标准中找不到任何相关内容。

具有内部或外部链接的对象呢?

不,我认为没有明确提到我们对相对对象布局一无所知这一事实。事实上,C 标准比这更激进,你甚至不允许在两个不是同一数组元素的变量上使用 < 运算符进行比较,也不能在指向对象的指针之间进行算术运算不属于同一个数组。

所以 "layout" 的整个问题甚至不能用 C 标准提供的术语来表述。