Pages

2010年2月2日 星期二

解決C/C++中的multiple definition of問題

範例: main.cpp #include "global.h" int Main(....) { ... } file_1.cpp #include "global.h" .... file_1.cpp #include "global.h" global.h中寫有所有的全局變量及其初始化值和函數聲明 在編譯的時候就會出錯: first defined here multiple definition of 原因是因為在多次包含global.h時重複定義了變量和函數。 解決方法:  方法一: 在global.c(或.cpp) 中聲明變量(不初始化),然後頭文件global.h中在所有的變量聲明前加上extern 如 extern int flag; 然後在其他需要使用全局變量的cpp文件中包含.h 文件而不要包含.cpp 文件。編譯器會為global.cpp 生成目標文件,然後連接時,在使用全局變量的文件中就會連接到此文件。  範例: Declare.h: #ifndef...