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       3
file1.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
extern으로 불러온 변수의 sizeof 호출하기  (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
Posted by 김용환 '김용환'

댓글을 달아 주세요