을 나는 3 개 *.c
파일 (file1.c
, file2.c
및 file3.c
) 및 프로젝트 (비주얼 스튜디오) 1 개 *.h
파일 (file3.h
)가 포함됩니다.는 가드가 여전히 글로벌 변수를 삽입
/*******************************
file3.h
********************************/
#ifndef FILE3_H
#define FILE3_H
int gintVariable = 400;
#endif
/*******************************
file1.c
********************************/
#include "file3.h"
#include <stdio.h>
#include <conio.h>
int modifyGlobalVariable(void);
void printGlobalVariable(void);
int main(void)
{
modifyGlobalVariable();
printGlobalVariable();
printf("Global variable: %d\n", gintVariable++);
getch();
return 0;
}
/*******************************
file2.c
********************************/
#include "file3.h"
int modifyGlobalVariable(void)
{
return gintVariable++;
}
/*******************************
file3.c
********************************/
#include "file3.h"
#include <stdio.h>
void printGlobalVariable(void)
{
printf("Global: %d\n", gintVariable++);
}
내가 VS에서 솔루션을 빌드 할 때, 그것은로 오류를주고있다.
전 처리기 출력을 확인했는데 gintVariable은 포함 된 경비원을 포함하고 있지만 모든 * .c 파일에 포함되어 있습니다.
내가 뭘하고있는 걸까요?
당신의 실수가 경비원 여러 정의에 대한 보호 등 가정한다. 호기심에서, 당신에게 그 아이디어는 무엇입니까? –
@LuchianGrigore : 포함되지 않은 경비원은 헤더 만 포함합니다. 나 맞아? – OnlyQuestions
동일한 번역 단위의 경우 예. 하지만 하나 이상의 파일을 컴파일하고 있습니까? –