預處理功能主要包括宏定義,文件包含,條件編譯三部分。分別對應宏定義命令,文件包含命令,條件編譯命令三部分實現。post
預處理過程讀入源代碼,檢查包含預處理指令的語句和宏定義,並對源代碼進行響應的轉換。預處理過程還會刪除程序中的註釋和多餘的空白字符。spa
指令 用途code
# 空指令,無任何效果blog
#include 包含一個源代碼文件編譯器
#define 定義宏string
#undef 取消已定義的宏it
#if 若是給定條件爲真,則編譯下面代碼io
#ifdef 若是宏已經定義,則編譯下面代碼編譯
#ifndef 若是宏沒有定義,則編譯下面代碼class
#elif 若是前面的#if給定條件不爲真,當前條件爲真,則編譯下面代碼
#endif 結束一個#if……#else條件編譯塊
#error 中止編譯並顯示錯誤信息
#else 略
#error 指令將使編譯器顯示一條錯誤信息,而後中止編譯。
貼上有用的代碼:
#include<stdio.h> #include<stdlib.h> #include<string.h> #define SIX 6 #define SEVEN 7 #define Cube(x) (x)*(x)*(x) #define VERSION "tzs" #define PASTE(n) "最終勝利者是:"#n #define NUM(a,b,c) a##b##c #define STR(a,b,c) a##b##c #define DEBUG 1 int main() { int i; i = SIX + SEVEN; printf("i = %d\n",i); i = (SIX * SEVEN); printf("i = %d\n",i); i = Cube(3); printf("i = %d\n",i); printf("%s",VERSION); printf("%s",PASTE(桃子)); puts(PASTE(yy/)); puts(PASTE(xx)); printf("%d\n",NUM(1,2,3)); //printf("%s\n",STR("aa","bb","cc")); #if DEBUG printf("Debugging\n"); printf("Debugging2222\n"); #endif printf("Running\n"); #if defined DEBUG printf("yes\n"); #endif #if !defined JJ printf("no JJ\n"); #endif }