在C:C11标准中完成类型到不完整类型

时间:2013-08-21 15:54:17

标签: c types standards c11

是否存在翻译单元中的完整类型可能成为不完整类型的情况? C11 standard(第6.2.5节)脚注中的以下陈述提出了这个问题。

  

在整个翻译单元中,类型可能不完整或完整,或者它可能会在翻译单元内的不同位置更改状态。

对于不完整类型在翻译单元中成为完整类型的示例比比皆是。但我想知道是否有可能出现相反的情况。我的直觉会告诉我它不是。

1 个答案:

答案 0 :(得分: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