1

是否存在翻译单元中的完整类型可以变成不完整类型的情况?C11 标准(第 6.2.5 节)脚注中的以下声明提示了这个问题。

一个类型在整个翻译单元中可能是不完整的或完整的,或者它可能会在翻译单元内的不同点改变状态。

不完整类型在翻译单元中变成完整类型的例子比比皆是。但我想知道相反的情况是否可能发生。我的直觉告诉我不是。

4

1 回答 1

1

一个复杂情况的例子如下

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
于 2013-08-21T16:22:39.613 回答