程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 解決C/C++中的multiple definition of問題

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

編輯:C++入門知識

main.cpp
#include "global.h"

int Main(....)
{
...
}

file_1.cpp
#include "global.h"
....

file_2.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 生成目標文件,然後連接時,在使用全局變量的文件中就會連接到此文件 。

方法二:
在global.h中加入防止多次重復定義的宏判斷符號
你的.H裡面要加上條件編譯
#ifndef  GLOBAL
#define GLOBAL
XXXXX
XXXXX
#endif
記住:在ifndef時一定要在第一行,前邊不要有任何的注釋或語句。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved