我只是建立一個簡單的C++項目。的代碼被顯示在如下:多個包含具有可變定義的頭文件
-------- -------- head.h
#ifndef _HEAD_H_
#define _HEAD_H_
int my_var = 100;
#endif
-------- src1.cpp - -------
#include "head.h"
-------- -------- src2.cpp
#include "head.h"
int main() { return 0; }
我建立二進制與命令:
g++ -c src1.cpp -o scr1.o
g++ -c src2.cpp -o src2.o
g++ -o a.out src2.o src1.o
但它在連接步驟失敗,並告訴我,我有「my_var'的多重定義。我不是在頭文件中使用安全防護宏嗎?我不明白。有人知道爲什麼
謝謝。
ps: 如果我將my_var定義爲一個靜態變量,那麼代碼可以傳遞鏈接。我也不明白。
在所有情況下,嘗試對源文件進行心理預處理,就好像您是GCC的預處理器一樣。也許它會帶來一些清晰。另外,值得一提的是,在C++中,你必須避免任何全局變量。 – Drop