C語言基礎 11 巨集

2021-08-08 02:53:25 字數 1650 閱讀 8840

巨集也可以用來給計算公式起名字

計算公式裡包含未知數字,需要使用巨集的引數表示這些未知數字

帶引數的巨集採用二次替換方式進行處理

巨集的引數不一定代表數字,所以沒有型別名稱

如果巨集有多個引數應該用逗號把相鄰的引數名稱分隔開

巨集不可以使用自己的儲存區和函式進行資料傳遞

巨集沒有形式引數也沒有用來存放返回值的儲存區

能當作數字使用的巨集必須寫成乙個表示式,因為巨集沒有用來存放返回值的儲存區

巨集的引數直接代表函式的儲存區,修改巨集引數的內容就是修改函式儲存區的內容

因為巨集沒有用來存放返回值的儲存區,所以不能保證優先計算巨集內部的操作符

所有能當作數字使用的巨集都必須寫在一對小括號裡面

巨集沒有形式引數所以不能保證優先計算引數裡面的操作符

編寫巨集的時候要把所有代表數字的引數都寫在小括號裡面

使用巨集的時候不要用自增或自減的結果做巨集的引數

編寫巨集的時候可以使用一些特殊的符號,這些符號叫做巨集操作符

#是乙個巨集操作符,它可以把巨集的乙個引數轉換成字串字面值

##也是乙個巨集操作符,它可以把乙個代表識別符號的引數和其他內容連線得到乙個新的識別符號

條件編譯可以在程式編譯的時候從幾組語句中選擇一組編譯而忽略其他組

#ifdef/#ifndef...#else...#endif

這個結構可以根據乙個巨集是否被定義過從兩組語句中選擇一組編譯

最開始的預處理指令應該從兩個裡選擇乙個

,不論選哪個後面都要跟乙個巨集名稱

如果選擇

#ifdef就表示巨集名稱被定義過時編譯前一組語句,否則編譯後一組語句

如果選擇

#ifndef就和

#ifdef

剛好相反

#if...#elif(任意多次

)...#else...#endif

以上結構也可以實現條件編譯,它可以根據任意邏輯表示式從多組語句中選擇一組編譯

多檔案程式設計是把乙個程式不同部分寫在多個不同檔案裡

多檔案程式設計時乙個檔案可以包含多個函式,乙個函式只能屬於乙個檔案

多檔案程式設計步驟

1.把所有函式分散在不同的檔案裡(主函式通常單獨佔乙個檔案)

2.為每個原始檔編寫配對的以

.h作為副檔名的標頭檔案(主函式所在的原始檔不需要配對標頭檔案)。所有不分配記憶體的內容都可以寫在標頭檔案裡。標頭檔案裡至少要包含配對原始檔裡所有函式的宣告語句。

3.修改每個原始檔包含必要的標頭檔案。(原始檔配對的標頭檔案是必要標頭檔案,如果標頭檔案裡宣告的函式被原始檔使用就也是必要標頭檔案)

可以在gcc命令後列出所有原始檔名稱,

這種方法可以編譯多檔案程式

可以把多檔案程式的編譯過程記錄在

makefile檔案裡,然後使用

make

工具根據

makefile

檔案的內容完成編譯工作

標頭檔案內容應該包含在預處理指令中間這樣可以避免多次重複編譯

標頭檔案裡使用的巨集名稱應該根據檔案路徑變化得到

如果想從乙個原始檔裡使用另外乙個原始檔裡宣告的全域性變數就需要使用

extern關鍵字再次宣告那個全域性變數 使用

extern關鍵字宣告全域性變數的語句不會真正分配記憶體,應該寫在標頭檔案裡

靜態全域性變數不可以被其他檔案中的語句使用

c語言基礎 巨集

在 c 語言中,可以採用命令 define 來定義巨集。在定義了巨集之後,無論巨集名稱出現在源 的何處,預處理器都會把它用定義時指定的文字替換掉。define 巨集名稱 替換文字 define print printf hello world define 巨集名稱 形參列表 替換文字 define...

C語言基礎 巨集函式

函式式巨集 巨集函式 和函式模擬會更加靈活,我們通過兩個例子來看一下。函式 include intsqr int int x double sqr double double x intmain int argc char ar 函式式巨集 include define sqr x x x intm...

C語言基礎學習筆記 巨集

巨集定義 define用來定義乙個識別符號和乙個字串,用這個識別符號替代這個字串。1.不帶引數的巨集定義 define 巨集名 字串 表示這是一條預處理命令 巨集名,是乙個識別符號,要符合識別符號的命名規則,並要求大寫 字串的位置可以是常量 表示式 格式字串 注意 巨集定義不是語句,不需要在末尾加分...