1

C标准规定:

如果对象标识符的声明是一个暂定定义并且具有内部链接,则声明的类型不应是不完整的类型

“声明的类型不应是不完整的类型”是什么意思?

4

1 回答 1

1

这意味着您不得拥有:

static int arr[]; // This is illegal as per the quoted standard.
int main(void) {}

该数组arr是暂时定义的并且具有不完整的类型(缺少有关对象大小的信息)并且还具有内部链接(staticarr具有内部链接)。

鉴于以下(在文件范围内),

int i; // i is tentatively defined. Valid.

int arr[]; // tentative definition & incomplete type. A further definition 
           // of arr can appear elsewhere. If not, it's treated like
           //  int arr[] = {0}; i.e. an array with 1 element.
           // Valid.

是有效的。

于 2013-09-11T05:54:18.607 回答