c코딩시 자주 하는 실수 중의 하나이다.
에러는 error: invalid application of `sizeof' to incomplete type `({anonymous})' 이렇게 나올 수 있다.
크기가 알려지지 않은, extern 배열 선언은 `incomplete type'이다. 그러므로, 크기가 알려질 수 있는 extern 배열 선언을 해야 한다.
자세한 답은 여기를 참조한다.
http://www.cinsk.org/cfaqs/html/node3.html#SECTION00380000000000000000
다른 소스에서 sizeof함수나 size를 얻어오는 방법
1. 크기를 미리 만들어 전역변수에 저장
file1.c:
int array[] = { 1, 2, 3};
int arraysz = sizeof(array);
file2.c: extern int array[]; extern int arraysz;2. 크기를 매크로로 이용하여 저장file1.h: #define ARRAYSZ 3file1.c: #include "file1.h" int array[ARRAYSZ];file2.c: #include "file1.h" extern int array[ARRAYSZ];3. 원 소스에서 선언과 정의를 하고, extern을 이용file1.c: int array[] = { 1, 2, 3};file2.c: extern int array[];
'c or linux' 카테고리의 다른 글
영어 축약어 (0) | 2006.02.15 |
---|---|
__init, __exit 의미 (0) | 2006.02.14 |
[본문 스크랩] Kernel File List (0) | 2006.02.14 |
The Linux Kernel API (0) | 2006.02.14 |
리눅스 I/O 포트 프로그래밍 미니 하우투 (0) | 2006.02.13 |