預(yù)處理指令是以#號(hào)開頭的代碼行,#號(hào)必須是該行除了任何空白字符外的第一個(gè)字符。#后是指令關(guān)鍵字,在關(guān)鍵字和#號(hào)之間允許存在任意個(gè)數(shù)的空白字符,整行語句構(gòu)成了一條預(yù)處理指令,該指令將
在編譯器進(jìn)行編譯之前對(duì)源代碼做某些轉(zhuǎn)換。
'冬瓜湯改編自c語言中文網(wǎng)c語言基礎(chǔ)入門
下面是本章涉及到的部分預(yù)處理指令:
指令 | 說明 |
---|
# | 空指令,無任何效果 |
#include | 包含一個(gè)源代碼文件 |
#define | 定義宏 |
#undef | 取消已定義的宏 |
#if | 如果給定條件為真,則編譯下面代碼 |
#ifdef | 如果宏已經(jīng)定義,則編譯下面代碼 |
#ifndef | 如果宏沒有定義,則編譯下面代碼 |
#elif | 如果前面的#if給定條件不為真,當(dāng)前條件為真,則編譯下面代碼 |
#endif | 結(jié)束一個(gè)#if……#else條件編譯塊 |
預(yù)處理功能是FB為兼容c語言的特色功能,它是在對(duì)源程序正式編譯前由預(yù)處理程序完成的,程序員在程序中用預(yù)處理命令來調(diào)用這些功能。
宏定義可以帶有參數(shù),宏調(diào)用時(shí)是以實(shí)參代換形參,而不是“值傳送”。
為了避免宏代換時(shí)發(fā)生錯(cuò)誤,宏定義中的字符串應(yīng)加括號(hào),字符串中出現(xiàn)的形式參數(shù)兩邊也應(yīng)加括號(hào)。
文件包含是預(yù)處理的一個(gè)重要功能,它可用來把多個(gè)源文件連接成一個(gè)源文件進(jìn)行編譯,結(jié)果將生成一個(gè)目標(biāo)文件。
條件編譯允許只編譯源程序中滿足條件的程序段,使生成的目標(biāo)程序較短,從而減少了內(nèi)存的開銷并提高了程序的效率。
使用預(yù)處理功能便于程序的修改、閱讀、移植和調(diào)試,也便于實(shí)現(xiàn)模塊化程序設(shè)計(jì)。