プリプロセス指令#ifndef #endifを使いグローバル変数の宣言を一度だけにしたつもりなのですが、グローバル変数の多重定義によるエラーが出ます。どこが間違っているのでしょうか。
ソースコードは3つのファイルに分かれていますmain.cとhead.cとhead.hです。
発生している問題・エラーメッセージ
multiple definition of `GLOBAL'
該当のソースコード
c
1以下main.cです 2 3#include <stdio.h> 4#include "head.h" 5int main(void) 6{ 7 printf("%d\n",GLOBAL); 8 printf(HOGE); 9 10 return 0; 11} 12 13以下head.cです 14 15# include "head.h" 16 17以下head.hです 18 19#ifndef HOGE 20#define HOGE "hoge" 21int GLOBAL=3; 22#endif
試したこと
1.gcc -c main.c head.c
によりオブジェクトファイルmain.oとhead.oを作成しました。
2.gcc -o main main.o head.o
によりmain.oとhead.oをリンクさせて実行可能ファイルmain.exeを作成しようとしました。しかし 「multiple definition of `GLOBAL'」とエラーが出てしまいました。
プリプロセス指令#ifndef #endifを使いグローバル変数GLOBALの宣言を一度だけにしたつもりなのですが、どこが間違っているのでしょうか教えていただけないでしょうか。
補足情報(FW/ツールのバージョンなど)
コンパイラはgccです。cygwinでコマンドを記述しております。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/07 10:58