一、什麼是預處理器函數
二、什麼是預處理器指令spa
三、預處理器指令it
四、宏指令io
五、宏函數編譯
六、宏函數的優缺點class
七、條件編譯指令變量
一、什麼是預處理器gcc
• 預處理器是一個程序,用來處理源程序中的預處理指令。數據類型
• 一個程序在編譯以前通常都要通過預處理。語法
二、什麼是預處理器指令
• 以「#」開頭的指令叫預處理指令
• 能夠出如今任何位置,必須一行結束
• 若是要換行,須得用"\"來鏈接兩行內容
三、預處理器指令
• 文件包含
#include <>#include 「」
• 宏定義
無參宏定義
有參宏定義
• 條件編譯
#if
#ifdef
#ifndef
#endif
#elif
#else
#undef
#if defined
四、宏指令
宏至關於文本的替換操做
• 語法格式:
-定義在函數的外面
-格式:#define PI 3.14
PI爲宏的文本內容 在編譯前將PI的內容替換成3.14
五、宏函數
• 語法格式: #define MianJi(r) PI*r*r
宏函數只是文本,只是至關於作了內容替換的操做,注意參數是沒有數據類型
六、宏函數的優缺點
• 宏函數的優缺點
能夠代碼更簡單、更容易,避免大量使用。
• 宏函數注意事項
– 宏函數中的參數必定要用括號括起來,以防止替換後的優先級問題。
– 宏函數的整個表達式也須要用括號括起來,以防止宏函數參於表 達式的運算
– 宏函數中的多條語句時,應寫成複合語句,以防止重複定義變量。
– 調用宏函數時,不要將++,--的表達式作爲參數傳遞,能夠先++,--後調用,或者,調用後++,--,以防止在宏函數中重複地 計算++,--
– 宏函數也能夠調用另外一個宏函數
七、條件編譯指令
• 在代碼中設置編譯條件 根據編譯條件進行代碼的編譯並運 行。(跨平臺)
• 在編譯文件的時候傳入一個參數,根據參數就能夠對代碼進 行有選擇的編譯。
gcc -DZHAOBENSHAN main3.c
• 條件指令
#if 若是 #ifdef 若是定義
#ifndef 若是沒定義 #elif 若是 //else if#else 不然 與 #if 對應關係
#endif 結束標識
#undef 取消宏和#define 定義宏
• 編譯方式
根據參數編譯
gcc -DXXX main.c
根據宏值(參數)
#define ZHAOBENSHAN 1
根據宏"值(邏輯)"進行編譯
#if ZHAOBENSHAN==1