多個源文件共享同個變量的方法

  extern可置於變量或者函數前,以表示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其餘模塊中尋找
其定義。
  另外,extern也可用來進行連接指定。

用法分析:
     在一個變量前加extern 好比:extern unsigned int Test;
編譯器編譯的時候,會把Test當成是外部的!會在其餘地方尋找Test這個變量的定義,若是隻加extern那麼編譯器就會報錯!
好比這樣:
     1>main.obj : error LNK2001:   沒法解析的外部符號 "int Test" (?Test@@3HA)
     1>E:\wtl\test\test\Debug\test.exe :  fatal error LNK1120:    1個沒法解析的外部命令
由於extern關鍵字只是說明咱們從外部引用了一個變量,該變量的值叫Test,提醒編譯器要到其餘文件中查找該變量!

要想不報錯,在其餘文件加int Test 定義一個名字叫Test的變量吧。這樣就能編譯經過。

那麼假設我有個main.c,source1.c,source2.c那麼我想要在main裏面定義一個變量,在source1.c跟source2.c都能使用該如何作?
很簡單,先在main.c中定義一個值:int data;
那麼在兩個點c文件中都加上:extern int data,
這個變量能被這三個.c文件共用了,至關於一個全局變量。

示例代碼:函數

//Main.c
#include
#include "source1.h"
#include "source2.h"
int data;
using namespace std;
void main()
{
    data = 4;
    adddata2();
    cout<<data<<endl;
    adddata1();
    cout<<data<<endl;
    cout<<"hello world "<<endl;
}

//Source1.c
#include "source2.h"
using namespace std;
extern int data;
void adddata2()
{
    data = data + 10;
}

//Source.h
#ifndef __SOURCE1_H__
#define __SOURCE1_H__
#include
void adddata1();
#endif
 
//Source2.c
#include "source1.h"
using namespace std;
extern int data;
void adddata1()
{
    data = data + 100;
}

//Source2.h
#ifndef __SOURCE2_H__
#define __SOURCE2_H__
#include
void adddata2();
#endif

 多個c文件共享同一個變量(全局變量)

當你聲明一個變量的時候是這樣 unsigned int data = 0;
當你在另外一個源文件中想使用這個變量的時候。
只須要加關鍵字:extern unsigned int data;
(注意,這只是說明這個data是外部的變量,實際上並不分配存儲空間的。也就是不能初始化!)spa

相關文章
相關標籤/搜索