在C 中定義全域性變數時避免重複定義

2021-07-13 19:53:33 字數 385 閱讀 4752

問題:如何在c++中定義全域性變數時避免重複定義呢?

今天遇到問題,全域性變數重定義錯誤,印象中記得要加extern,但是怎麼都不對,找資料後得到了解決方案,記之。(參考文獻:

解決方案:

只要在定義時盡量在.cpp檔案中進行,而不要在.h 檔案中定義。定義好了之後,可以在.h檔案中利用extern關鍵字進行宣告。如果在.h檔案中定義的話,多層包含就可能會引起重複定義的錯誤。

例子:在params.cpp中定義全域性變數

params.cpp

int a;//定義

params.h

extern int a;//宣告

然後其他檔案要使用這些變數的時候只要#include "params.h"就可以了,而且不會引起重複定義的錯誤.

防止全域性變數重複定義

問題 在.h檔案中定義了全域性變數 並用 ifndef identifier h define identifier h endif但是依然出現重複定義問題 分析 ifndef這套條件編譯是為了防止同乙個.c檔案中包含多個相同.h檔案的 比如有乙個.c檔案包含了a.h,a.h又包含了b.h,那麼當你...

C定義全域性變數

程式工程中往往遇到這樣的問題 某個變數是貫穿始終的,主函式以及不同的子函式都要用到這個變數,並且要呼叫子函式改變變數的值。這時候全域性變數就起到乙個橋梁作用,在函式外定義,在主函式中呼叫定義,在子函式a中呼叫並賦值,在子函式b中呼叫該變數,此時的值已經是改變之後的值。用法 在主函式之前定義全域性變數...

C定義全域性變數

參考 程式工程中往往遇到這樣的問題 某個變數是貫穿始終的,主函式以及不同的子函式都要用到這個變數,並且要呼叫子函式改變變數的值。這時候全域性變數就起到乙個橋梁作用,在函式外定義,在主函式中呼叫定義,在子函式a中呼叫並賦值,在子函式b中呼叫該變數,此時的值已經是改變之後的值。用法 在主函式之前定義全域...