Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
是否存在翻译单元中的完整类型可以变成不完整类型的情况?C11 标准(第 6.2.5 节)脚注中的以下声明提示了这个问题。
一个类型在整个翻译单元中可能是不完整的或完整的,或者它可能会在翻译单元内的不同点改变状态。
不完整类型在翻译单元中变成完整类型的例子比比皆是。但我想知道相反的情况是否可能发生。我的直觉告诉我不是。
一个复杂情况的例子如下
extern double A[]; double* f(void) { extern double A[5]; enum { a = sizeof(A), }; //< A has complete type return A; } enum { b = sizeof(A), }; //< A has incomplete type: error double A[5]; enum { c = sizeof(A), }; //< A has complete type