c 重複定義

2021-08-07 07:36:52 字數 645 閱讀 4364

今天測試了一下c++下重複定義會出現什麼問題,使用gcc和vs2010做了測試,兩者的測試結果一樣

一共有5個檔案,2個頭檔案,3個cpp檔案。內容分別如下

#ifndef _redefine0_h_

#define _redefine0_h_

#includeusing namespace std;

//變數宣告和定義

int i; //錯誤

int j=0; //錯誤

extern int k; //正確

extern int k=0;//錯誤

//函式宣告和定義

void func() //錯誤

{}void fun(); //正確

//類宣告和定義

class dog //正確

;class dog //編譯通過,最終輸出和main中inlude順序有關,先定義為準

void fun(); //正確

//類宣告和定義

class dog //正確

;class dog //編譯通過,最終輸出和main中inlude順序有關,先定義為準

C變數重複定義錯誤

c c 語言中有很多地方要用到extern,但是如果沒有真正的了解它的意義,會給程式設計帶來很大的麻煩,為了使大家少走彎路,特祥細的說明一下。對於比較小的程式,一般只有乙個c檔案和乙個標頭檔案,全域性變數我們通常會直接定義在c檔案中,在程式之前加int i定義。如果要在標頭檔案中定義有以下兩種方法 ...

C 鏈結時重複定義

因為在標頭檔案中有 ifndef define endif 所以在編譯的時候,標頭檔案不會被重複包含,不會出現重定義的問題。但是如果標頭檔案中有函式的定義,那麼不同cpp檔案都包含這個標頭檔案,在彙編成.o檔案後,不同的.o檔案中都含有標頭檔案中函式的定義,鏈結階段就會出現重定義的問題。如果出現這種...

C語言中重複定義的問題

幾個基本知識 1 標頭檔案 標頭檔案的作用在於編譯時,會在 include h 位置處展開,所以如果有多個.c檔案include同乙個標頭檔案 很常見 如果標頭檔案編寫時不進行處理,出現重複定義是不可避免的。尤其是當乙個專案分成多個模組的時候。2 一般,把函式 變數 結構體 類等放在.c或者.cpp...