預處理指令是以#號開頭的**行。#號必須是該行除了任何空白字元外的第乙個字元。#後是指令關鍵字,在關鍵字和#號之間允許存在任意個數的空白字元。整行語句構成了一條預處理指令,該指令將在編譯器進行編譯之前對源**做某些轉換。
1."#「和」##"
(1).#define pi 3.1415926
(2).#define paste(n) 「asdfg」#n
printf("%s",paste(15)); //輸出:asdfg15
(3).#define num(a,b,c) a##b##c
printf("%d",num(1,2,3)); //輸出123
2.常見預處理命令
(1).定義變數(define)和取消定義變數(undef)。
#define pi 3.14
int main()
#undef pi
(2).條件預處理語句(只有在滿足一定條件的時候才編譯某部分內容)。#if、#ifdef、#ifnedf、#else、#elif、#endif。
#define max 10
int main()
輸出:
(5).特殊命令預處理(「error」,「pragam」,「null」)
1)"error"強制編譯程式停止編譯,並給出提示資訊。執行了該語句,後面的程式將不在繼續執行。
#include #includeusing namespace std;
//如果沒有定義巨集"__dos",編譯報錯"dos os is required."。如果定義了,成功編譯。
#define __dos
#ifndef __dos
#error dos os is required.
#endif
int main()
2).#pragma指定特殊的指令給編譯器。
在所有的預處理指令中,#pragma 指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。#pragma指令對每個編譯器給出了乙個方法,在保持與c和c++語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器或作業系統專有的,且對於每個編譯器都是不同的。
其格式一般為: #pragma para
我在另外一篇部落格看到乙個比較好的,推薦大家可以去看看:
C C 預處理指令
預處理指令 preprocessor directives define undef ifdef ifndef if endif else and elif line error include 預定義識別符號 pragma 預處理指令是我們寫在程式 中的給預處理器 preprocessor 的命令...
C C 編譯預處理指令
眾所周知,你的程式編譯前要做的事就是掃瞄源 對其做初步的轉換,產生新的源 提供給編譯器,這個過程就叫編譯預處理。這個處理過程由預處理器來完成,預處理器是在程式真正執行前由編譯器呼叫的預處理程式。常見的預處理有以下三種 include 是一種最為常見的預處理,主要是做為檔案的引用組合源程式正文。巨集替...
C C 常用預處理指令
預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。預處理命令以符號 開頭。常用的預處理指令包括 巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 巨集替換只作替換,不做計算,不做表示式求解。巨集定義分帶引數的巨集定義和不帶引數的巨集定義。在帶引數的巨集定義,巨集名...