现在,据我所知,在name[]
的声明中的extern
告诉编译器它的定义是在别的地方(在我的程序中,我已经定义它在我已经使用它的部分的下面)。但是为什么然后有不同对于strlen()
和sizeof
的后果? strlen()
工作正常,但为sizeof()
我得到的错误:为什么“extern char name []”中的数组索引不会影响strlen(name),但会导致sizeof(name)的错误?
invalid application of 'sizeof' to incomplete type 'char[]' |
这是我的计划:
#include<stdio.h>
#include<string.h>
extern char name[];
int main()
{
printf("%d,%d",strlen(name),sizeof(name));
}
char name[]="Bryan";
//char name[6]="Bryan"; //Neither of these make sizeof work
我想根据我的extern
关键字的理解,推理出来的,但我已经打一个瓶颈。所以请给出你的答案。
只要确保你不会在extern声明中使用一个大小,而在实际的变量定义中使用另一个大小,就会导致“有趣”的问题。 – 2013-05-11 18:41:51