導航:首頁 > 源碼編譯 > 編譯器中定義過程變數

編譯器中定義過程變數

發布時間:2023-06-04 15:53:08

Ⅰ C++中如何定義變數

簡單說:你要定義一個整形變數就是直接「類型 變數名;」就行。例如定一個叫做a的整形變數
「int a;」
詳細說明:
在C++中,變數聲明(declaration)只有在使用extern關鍵字時才成立,其他情況下都是定義(definition),而在使用extern的同時給變數賦初始值,則聲明變為定義,extern關鍵字也將被編譯器忽略。C++變數的作用域預設情況下是全局的,也就是對多個源文件可見,比如說,如果在a.cpp和b.cpp中都有
int a;
則編譯器鏈接兩個文件時會報告錯誤,「變數重復定義」。因此,要使變數定義只對該源文件可見,就要顯式加上static關鍵字。因此,我們可以想到,如果在a.cpp中有
extern int a;
而在b.cpp中有
static int a = 9;
那麼,編譯器鏈接時會給出錯誤信息,「找不到a的定義」,因為a的定義在b.cpp並只對該文件可見,a.cpp找不到a的定義因此出錯。
變數的聲明和定義是比較容易混淆的概念,因此記住一點,除非有extern關鍵字,否則都是變數的定義。由此,我們可以歸納出幾點好的程序設計風格:
1. 不要把變數定義放入.h文件,這樣容易導致重復定義錯誤。
2. 盡量使用static關鍵字把變數定義限制於該源文件作用域內,除非該變數被設計成全局的。
例外情況是const變數和typedef類型,在《The C++ Programming Language》9.2節中說到,const和typedef預設作用域是局部的,因此不需要static來顯式聲明。因此,在.h文件中放置const變數定義不會產生問題,編譯器會給每個引用該.h文件的源文件產生一份該const變數的局部定義,就像該變數是定義於該源文件中一樣。大家也不用太擔心編譯器這么做會浪費空間,因為編譯器優化過程一般會把有相同值的const變數進行合並。
對於static關鍵字,要多說幾句的是,static一般有兩種意思,當修飾函數定義里的變數或者類成員變數時,稱作靜態變數;修飾其他變數時,稱作局部變數。為防止混淆,一般不要特意給局部變數加上static關鍵字。除了static關鍵字,namespace也可以使變數定義成為局部的。

Ⅱ 問一下各位,c語言編譯器是如何處理變數名的呢

編譯器編譯到int a;時就在內存中開辟一個兩位元組的內存空間,並且命名為a

Ⅲ C語言中如何定義全局變數

1、首先,我們可以在函數外面定義變數,就是全局變數。

閱讀全文

與編譯器中定義過程變數相關的資料

熱點內容
聚幣交易所app怎麼充值 瀏覽:161
加密文件如何解除加密iPad 瀏覽:920
太極張三豐懷舊源碼 瀏覽:103
2016考研大綱pdf 瀏覽:65
程序員sdk演算法 瀏覽:526
程序員聽診技巧 瀏覽:609
從技術走向管理pdf 瀏覽:820
思科命令行模式刪除用戶 瀏覽:565
一號玩家app怎麼換綁 瀏覽:322
emm平台源碼 瀏覽:328
從網頁下載資料伺服器地址 瀏覽:404
安卓用什麼播放器可以看港劇 瀏覽:455
keil5一編譯axf就缺失了 瀏覽:506
現代電機控制技術pdf 瀏覽:449
手機系統加密形同虛設是真的嗎 瀏覽:739
電視怎麼連接播放app 瀏覽:680
pdf怎麼轉換成word工具 瀏覽:865
c語言程序員成長 瀏覽:887
火影忍者手游助手app怎麼下 瀏覽:832
1997年四川空氣壓縮機廠 瀏覽:161