지금부터 제가 이해 한 바로는 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
키워드에 대한 이해를 기반으로 그것을 밖으로 추론하기 위하여 노력을하지만, 나는 명중했다 병목 현상 이군. 그래서 대답 해주세요. sizeof
이 내용을 sizeof
는 점에서 변수를 알 수 없지만, strlen
는 컴파일시 크기에 대한 상관하지 않기 때문에이 마킹 NUL 문자를 찾을 때까지
extern 선언에서 하나의 크기를 사용하고 실제 변수 정의에서 다른 하나의 크기를 사용하여 컴파일러를 "속이거나" "재미있는"문제가 발생하는지 확인하십시오. –