: 은 헤더 파일과 같은 경우 :선언과 C의 기간에서 선언 및 정의와 혼동 아직 정의
#ifndef _BASIC_H_
#define _BASIC_H_
void test();
extern int i; //define or declare
#endif
두 소스 파일 f1.c 및 f2.c이 헤더를 포함하고 하나 개의 소스 파일은 변수 "i"를 정의해야합니다.
하지만 헤더 파일이 같은 경우
:#ifndef _BASIC_H_
#define _BASIC_H_
void test();
int i; //define or declare
#endif
및 두 개의 소스 파일 f1.c 및 f2.c, 정의없이이 헤더를 포함는 "i"가 모든 파일에 여전히 통해 때 변수 간다 변수를 사용합니다.
내 질문은 변수가 정의 된 때입니다. 스토리지를위한 메모리를 할당하고 어쩌면에 값을 할당 할 때 변수를 정의
덕분에
[이것은 C++과 동일한 질문에 대한 답변입니다.] (http://stackoverflow.com/questions/1410563/what-is-the-difference-between-a-definition-and-a-declaration/1410632#1410632) C와 C++에는 차이점이 있지만, 당신이 묻는 것에 대해서는 적용되지 않습니다. – sbi
'void test();'는'void test (void);'와 같지 않습니다. 두 번째 것은 컴파일 타임에'test (foo);를 호출 할 때 에러를 잡을 것이다. – nmichaels