プロジェクト (Visual Studio) に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 already defined in file1.obj"
ます。
プリプロセッサの出力を確認しました。インクルード ガードを含めたにもかかわらず、すべての *.c ファイルに gintVariable が含まれています。
私がしている間違いは何ですか?