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

編譯器中定義過程變數

發布時間: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、首先,我們可以在函數外面定義變數,就是全局變數。

閱讀全文

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

熱點內容
windows下編譯python 瀏覽:607
linux藍牙連接 瀏覽:898
安卓qq郵箱格式怎麼寫 瀏覽:431
如何電信租用伺服器嗎 瀏覽:188
編程中計算根號的思維 瀏覽:183
可愛的程序員16集背景音樂 瀏覽:448
軟體代碼內容轉換加密 瀏覽:797
什麼app看電視不要錢的 瀏覽:16
烏班圖怎麼安裝c語言編譯器 瀏覽:280
plc通訊塊編程 瀏覽:923
我的世界伺服器怎麼清地皮 瀏覽:422
ftp伺服器如何批量改名 瀏覽:314
網易我的世界伺服器成員如何傳送 瀏覽:268
公司雲伺服器遠程訪問 瀏覽:633
法哲學pdf 瀏覽:638
清大閱讀app是什麼 瀏覽:447
怎麼用qq瀏覽器整體解壓文件 瀏覽:587
肺組織壓縮15 瀏覽:271
安卓手機為什麼換電話卡沒反應 瀏覽:797
諸子集成pdf 瀏覽:340