1. 人們常常稱機器語言為目標**(object code)
2. 預處理命令(preprocessor directives)三種預處理包括:巨集定義、檔案包含、條件編譯。在對源程式編譯之前,會對程式中的所有預處理指令進行處理。預處理就是在進行編譯的第一遍詞法掃瞄和語法分析之前所作的工作。說白了,就是對原始檔進行編譯前,先對預處理部分進行處理,然後對處理後的**進行編譯。
一般格式
程式段1#else
程式段2#endif
當表示式為非零(「邏輯真」)時,編譯程式段1,否則編譯程式段2
例子: 注意巨集定義時的***
– flawedexample:
#define
mymult
(a,b
) a*b •
source:
k =
mymult
(i-1, j+5); •
postpreprocessing:
k =i
– 1 * j + 5; –
better:
#define
mymult
(a,b
) (a)*(b) •
source:
k =
mymult
(i-1, j+5);
postpreprocessing:
k = (
i– 1)*(j + 5);
– macro:
#define
mysq
(a)(a)*(a) –
flawedusage: •
source:
k =
mysq(i
++)
• postpreprocessing:
k = (
i++)*(
i++)
alternativeis to use
inline』ed
functions –
inline
intmysq
(int
a) ;
mysq(i
++)works as expected in this case.
預處理指令
預處理指令是我們寫在程式 中的給預處理器 preprocessor 的 命令,而不是程式本身的語句。預處理器在我們編譯乙個c 程式時由編譯器自動執行,它負責控制對程式 的第一次驗證和消化。所有這些指令必須寫在單獨的一行中,它們不需要加結尾的分號 在這個教程的開頭我們已經提到了一種預處理指令 defi...
預處理指令
普通 define 巨集名 字串 define my int int define max 10000 帶引數 define 巨集名 形參 字串 define add x,y x y 在大規模的開發過程中,特別是跨平台和系統的軟體裡,條件編譯很重要。include using namespace s...
預處理指令
雖然同c和c 的術語 預處理指令 名稱一樣,但c 的其實並沒有單獨的預處理步驟,也就是說在vs等環境中並沒有預處理的編譯器。預處理指令能夠用於替換原始檔中的資訊。以 sharp 字元和預處理指令名稱開頭。例如 define max習慣於將預處理指令的名稱全部設為大寫。和c與c 不同的是,c 中的預處...