干貨分享|小白必看!C預(yù)處理器
發(fā)布時間:2023-06-16 16:06:24
C 預(yù)處理器
C 預(yù)處理器不是編譯器的組成部分,但是它是編譯過程中一個單獨的步驟。簡言之,C 預(yù)處理器只不過是一個文本替換工具而已,它們會指示編譯器在實際編譯之前完成所需的預(yù)處理。我們將把 C 預(yù)處理器(C Preprocessor)簡寫為 CPP。
所有的預(yù)處理器命令都是以井號(#)開頭。它必須是第一個非空字符,為了增強可讀性,預(yù)處理器指令應(yīng)從第一列開始。
預(yù)處理器實例
分析下面的實例來理解不同的指令。
#define MAX_ARRAY_LENGTH 20
這個指令告訴 CPP 把所有的 MAX_ARRAY_LENGTH 定義為 20。使用 #define 定義常量來增強可讀性。
#include #include "myheader.h"
這些指令告訴 CPP 從系統(tǒng)庫中獲取 stdio.h,并添加文本到當(dāng)前的源文件中。下一行告訴 CPP 從本地目錄中獲取 myheader.h,并添加內(nèi)容到當(dāng)前的源文件中。
#undef FILE_SIZE#define FILE_SIZE 42
這個指令告訴 CPP 取消已定義的 FILE_SIZE,并定義它為 42。
#ifndef MESSAGE #define MESSAGE "You wish!"#endif
這個指令告訴 CPP 只有當(dāng) MESSAGE 未定義時,才定義 MESSAGE。
#ifdef DEBUG /* Your debugging statements here */#endif
這個指令告訴 CPP 如果定義了 DEBUG,則執(zhí)行處理語句。在編譯時,如果您向 gcc 編譯器傳遞了 -DDEBUG 開關(guān)量,這個指令就非常有用。它定義了 DEBUG,您可以在編譯期間隨時開啟或關(guān)閉調(diào)試。
預(yù)定義宏
ANSI C 定義了許多宏。在編程中您可以使用這些宏,但是不能直接修改這些預(yù)定義的宏。
預(yù)處理器運算符
C 預(yù)處理器提供了下列的運算符來幫助您創(chuàng)建宏:
宏延續(xù)運算符(\)
一個宏通常寫在一個單行上。但是如果宏太長,一個單行容納不下,則使用宏延續(xù)運算符(\)。例如:
#define message_for(a, b) \ printf(#a " and " #b ": We love you!\n")
字符串常量化運算符(#)
在宏定義中,當(dāng)需要把一個宏的參數(shù)轉(zhuǎn)換為字符串常量時,則使用字符串常量化運算符(#)。在宏中使用的該運算符有一個特定的參數(shù)或參數(shù)列表。
- 上一篇:干貨分享|C文件讀寫
- 下一篇:干貨分享|C頭文件