在C 中正確使用多檔案和全域性變數的方法

2021-10-03 17:11:43 字數 1600 閱讀 9994

假設有這樣一段程式:

#include

using

namespace std;

int a =12;

// 全域性變數

void

func

(int x)

intmain()

現在希望將func函式單獨寫為乙個檔案,並將a定義為全域性變數。

先展示一種錯誤的做法:

// globalvariable.h

#pragma once

int a =12;

// 宣告並定義全域性變數

void

func

(int x)

;// func.cpp

#include

#include

"globalvariable.h"

using

namespace std;

void

func

(int x)

// main.cpp

#include

#include

"globalvariable.h"

using

namespace std;

intmain()

這樣會出現編譯錯誤,提示出現了重複定義

編譯報錯:重複定義

出現錯誤的原因是:globalvariable.h中進行了全域性變數的宣告定義(注意區分二者的區別),而func.cpp和main.cpp中都包含了globalvariable.h,即出現了重複定義

那麼我們只需要在globalvariable.h中利用extern進行進行宣告,而在func.cpp中進行定義即可。

完整的程式如下:

// globalvariable.h

#pragma once

extern

int a;

// 全域性變數的宣告,且要使用extern關鍵字

void

func

(int x)

;// func.cpp

#include

#include

"globalvariable.h"

using

namespace std;

int a =12;

//全域性變數的定義

void

func

(int x)

// main.cpp

#include

#include

"globalvariable.h"

using

namespace std;

intmain()

執行結果為22

C語言全域性變數多檔案使用

c語言全域性變數多檔案使用 定義乙個全域性變數,想在多個檔案中使用,如下 externintvar include var.h intvar 10 include var.h include var.h include var.h 只能在乙個檔案裡面賦初值,否則鏈結出錯。看到個c的題 全域性變數可不...

c 全域性變數,多模組使用

用extern修飾的全域性變數 在test1.h中有下列宣告 ifndef test1h define test1h extern char g str 宣告全域性變數g str void fun1 endif 在test1.cpp中 include test1.h char g str 12345...

c 全域性變數的正確宣告

c 中全域性變數宣告錯誤情況 造成 lnk2005 錯誤主要有以下幾種情況 1 重複定義全域性變數。可能存在兩種情況 a 對於一些初學程式設計的程式設計師,有時候會以為需要使用全域性變數的地方就可以使用定義申明一下。其實這是錯誤的,全域性變數是針對整個工程的。正確的應該是在乙個 cpp檔案中定義如下...