C/C++ 預處理

以下幾點只是我自己的筆記加上一點體會, 內容比較簡單。具體的使用技巧以後再舉例說明。


1CC++程序中允許定義一些命令, 這些命令可以在編譯之前進行處理,這些命令成爲預處理命令


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替換a3替換b,用字符串處理函數就可以實現了。


8、宏定義的各部分使用空格進行分割的,所以,不要隨便添加空格了 ^^,另外一個宏只能寫在一行上,當然行尾加\是可行的。


9、文件包含:把被包含的文件全部拷貝到當前文件中。然後就可以使用被包含的文件中的內容了。此時就不需要用extern聲明瞭。 注意相互包含的問題,即 A包含了B之後,就不要在B裏面包含A了,如果真的需要的化,就用條件預編譯,或者C++中的#Program Once


10#include "" <> 的區別, <> 通常用於標準庫文件,而 "" 用於用戶自定義文件。


11、條件編譯:#if(#ifdef\#ifndef) #else #endif  //#if 後面跟邏輯值, #ifdef#ifndef 之後通常會定義一個作爲條件的宏。




發佈了41 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章