久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9461|回復: 0
收起左側(cè)

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

[復制鏈接]
ID:105323 發(fā)表于 2016-3-4 01:23 | 顯示全部樓層 |閱讀模式
記得還是大二的時候,只會if else這些,所有的代碼都是在同一個main.c文件中!!!這是何等的搞笑啊,現(xiàn)在想想都覺得好笑,不過很開心我現(xiàn)在終于會把自己寫的東西保存起來,因為沒準哪天會用到,畢竟自己寫的,自己知道怎么去改,既然當了程序員,那么就要將基礎學好咯,以上都是廢話。
This isa 華麗的分割線----------------
多個源文件共享同個變量的方法當然就是extern關鍵字了
extern:extern可置于變量或者函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時在其他模塊中尋找其定義。另外,extern也可用來進行鏈接指定。
現(xiàn)做如下解釋:
我們可以在一個變量前加一個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 : fatalerror LNK1120: 1 個無法解析的外部命令
那么就說明,其實我們這個extern關鍵字只是說明我們從外部引用了一個變量,該變量的值叫Test,提醒編譯器要到其他文件中查找該變量!
要想不報錯,在其他文件加個int Test定義一個名字叫Test的變量吧。這樣就能編譯通過啦,貌似有點離題。表緊!我們趕緊回頭,
那么假設我有個main.c,source1.c,source2.c那么我想要在main里面定義一個變量,在source1.c跟source2.c都能使用該如何做?很簡單,先在main.c中定義一個值:int data;
那么在兩個點c文件中都加上:externintdata,那么,恭喜你,這個變量能被這三個.c文件共用了,相當于一個全局變量了吧。
示例代碼:
Main.c
#include
#include "source1.h"
#include "source2.h"
intdata;
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


如上是結果,
大家自己理解哈~~~
goodnight~~~
其實想想原理挺容易懂的
當你聲明一個變量的時候是這樣 unsigned int data =0;
當你在另一個源文件中想使用這個變量的時候。只需要加關鍵字:externunsigned intdata;(注意,這只是說明這個data是外部的變量,實際上并不分配存儲空間的。也就是不能初始化!)這樣就很Ok啦。

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩综合在线 | 日韩一区二区三区视频在线播放 | 精品毛片在线观看 | 一区二区三区在线 | 成人小视频在线观看 | 精品欧美一区二区三区久久久 | 伊人免费在线观看 | 欧美一区二区在线 | 人和拘一级毛片c | 国产精品成人久久久久 | 成人在线观看中文字幕 | 久久久久成人精品 | 久久伊人在 | 久久久久久久久久性 | 美女午夜影院 | 欧美性大战久久久久久久蜜臀 | 91精品国产乱码久久久 | 日韩精品在线视频免费观看 | 日韩在线国产精品 | 精品一区二区久久久久久久网精 | 日韩精品 | 福利精品在线观看 | 日韩精品在线免费观看视频 | 黄色一级大片在线观看 | 一区二区三区国产 | 91中文字幕在线 | 精品国产91久久久久久 | 国产一区二区在线播放 | 亚洲一区| 欧美日韩一区二区在线 | 婷婷中文字幕 | 国产亚洲精品久久19p | 欧美视频精品 | 欧美一区二区在线观看 | 精品国产一区二区三区成人影院 | 亚洲一二视频 | 国产精品污www一区二区三区 | 韩日视频在线观看 | 日韩av成人 | 亚洲国产中文字幕 | 久久久精品亚洲 |