以下幾點只是我自己的筆記加上一點體會, 內容比較簡單。具體的使用技巧以後再舉例說明。
1、C、C++程序中允許定義一些命令, 這些命令可以在編譯之前進行處理,這些命令成爲預處理命令
2、預處理命令以#開頭,包括#include、#define、#undef、 #if#else #endif、#ifdef、#ifndef
3、按功能的不同又被分爲:宏定義、文件包含處理、條件編譯三種
4、預處理的目的:提高編程效率,處理跨平臺問題等
5、預處理操作實際上就是替換…,所以加括號就是一個很好的習慣了,如果沒括號,優先級的問題將是一個大問題。
6、注意:末尾不加分號,它不是C語句,也不是C語法,只是預處理程序支持。
7、預處理程序支持帶參數的宏替換操作(挺強大的,我們自己也可以設計一個宏替換的簡單算法)
eg: #define S(a,b) (a*b) 括號裏面的就是參數了。
關於帶參數的宏的理解:首先,宏的標誌就是S,跟參數無關,它應該具有唯一性,另外,參數是從左到右進行替換。比如上例中S(2,3) 就是根據標號S,找到宏定義,由(,)確定參數,然後從左到右,2替換a,3替換b,用字符串處理函數就可以實現了。
8、宏定義的各部分使用空格進行分割的,所以,不要隨便添加空格了 ^^,另外一個宏只能寫在一行上,當然行尾加\是可行的。
9、文件包含:把被包含的文件全部拷貝到當前文件中。然後就可以使用被包含的文件中的內容了。此時就不需要用extern聲明瞭。 注意相互包含的問題,即 A包含了B之後,就不要在B裏面包含A了,如果真的需要的化,就用條件預編譯,或者C++中的#Program Once。
10、#include "" 與 <> 的區別, <> 通常用於標準庫文件,而 "" 用於用戶自定義文件。
11、條件編譯:#if(#ifdef\#ifndef) #else #endif //#if 後面跟邏輯值, #ifdef、#ifndef 之後通常會定義一個作爲條件的宏。