1.標頭檔案的引用:include
2.巨集定義: define
1.#include 「filename」
2.#include < filename >
這兩種引用方式之間的區別就在於,在以< filename> 方式引用的時候,如果在windos環境下採用ide(如:codebloks)進行編譯,那麼會先在系統頭檔案目錄中查詢,若查詢失敗,再到當前目錄中查詢,還查詢不到則報錯;如果在linux 環境下採用 gcc 進行編譯,那麼僅在系統頭檔案目錄中查詢,查詢不到則報錯。
提公升**的可移植性
#define int_size sizeof(int)
// 因為sizeof(int) 在不同的編譯環境下的執行結果有可能不同
// 所以此種情況下最好使用巨集定義
減少不必要的修改,提公升程式的可預讀性
#define pi 3.1415926
// 如果需要修改pi的值僅需要在此處修改即可
巨集替換不做語法檢查,所以在使用的時候要格外小心,必要的時候可以用const 替代 define
不要在字串中使用巨集,如果巨集名出現在字串中,那麼將按字串進行處理
巨集替換通常在檔案開頭部分,寫在函式的花括號外邊,作用域為其後的程式,直到用 #undef 命令終止巨集定義的作用域
#include
#include
#define pi 3.1415926
intmain()
1.語法:#define 識別符號 字串
1.語法: #define 巨集名(參數列) 表示式
2.注意事項
(1) 巨集名和參數列的括號間不能有空格。
(2) 巨集替換只做替換,不做計算和表示式求解,這一點要格外注意。
#define a 10+20
#define b 50+30
// a * b = 10 + 20 * 50 + 30
#define c (10+20)
#define d (50+30)
// c * d = (10 + 20) * (50 + 30)
(3) 巨集替換在編譯前進行,不分配記憶體。
(4) 巨集替換不存在型別,也沒有型別轉換
(5) 巨集在預處理階段就會被替換
1.在乙個巨集定義中巢狀其他的巨集
2.示例
#define n 55
#define area n*n
1.預處理程式提供了條件編譯的功能,使用者可以選擇性地編譯程式,進而產生不同的目標**檔案
2.定義方式
#if 常量表示式
**1#else
**2#endif
//當常量表示式為真,執行**1,否則執行**2
#ifdef 識別符號
**1#else
**2#endif
// 如果識別符號被#define定義,則執行**1,否則執行**2
#ifndef 識別符號
**1#else
**2#endif
// 如果識別符號未被#define定義,則執行**1,否則執行**2
// 還可以注釋**段
#if (0)
注釋**段;
#endif
應該要注意的問題:常量表示式不能是變數和含有sizeof 等在編譯時求值的操作符,在使用條件編譯命令時尤其要注意。 C語言 預處理命令
我們可以在c源程式中插入傳給編譯程式的各中指令,這些指令被稱為預處理器指令,它們擴充了程式設計的環境。現把常用的預處理命令總結如下 1.預處理程式 按照ansi標準的定義,預處理程式應該處理以下指令 if ifdef ifndef else elif endif define undef line ...
C語言 預處理命令
一 巨集定義 在 語言源程式中允許用乙個識別符號來表示乙個字串,稱為 巨集 被定義為 巨集 的識別符號稱為 巨集名 在編譯預處理時,對程式中所有出現的 巨集名 都用巨集定義中的字串去代換,這稱為 巨集代換 或 巨集展開 巨集定義是由源程式中的巨集定義命令完成的。巨集代換是由預處理程式自動完成的。在 ...
C語言預處理命令
以 開頭的預處理命令。如 include,巨集定義命令 define pi 3.1415926等。在源程式中這些命令都放在函式之外,而且一般放在原始檔前面,它們稱為預處理部分。無參巨集定義 無參巨集的巨集名後不帶引數。其定義的一般形式為 define 識別符號 字串 其中的 表示這是一條預處理命令,...