extern 标注的符号 在链接的时刻解析。。。
所以 sizeof 不知道 这个符号到底占用了多少空间。
sizeof cannot be used with function types, incomplete types, or bit-field lvalues.
When applied to an operand that has structure or union type, the result is the total number of bytes in such an object, including internal and trailing padding.
An incomplete type is a type that describes an identifier but lacks information needed to determine the size of the identifier. An "incomplete type" can be:
A structure type whose members you have not yet specified.
A union type whose members you have not yet specified.
An array type whose dimension you have not yet specified.
The void type is an incomplete type that cannot be completed. To complete an incomplete type, specify the missing information. The following examples show how to create and complete the incomplete types.
To create an incomplete structure type, declare a structure type without specifying its members. In this example, the ps pointer points to an incomplete structure type called student.
To complete an incomplete structure type, declare the same structure type later in the same scope with its members specified, as in
To create an incomplete array type, declare an array type without specifying its repetition count. For example:
To complete an incomplete array type, declare the same name later in the same scope with its repetition count specified, as in