C/C++語言 預處理小結

預處理功能主要包括宏定義,文件包含,條件編譯三部分。分別對應宏定義命令,文件包含命令,條件編譯命令三部分實現。post

預處理過程讀入源代碼,檢查包含預處理指令的語句和宏定義,並對源代碼進行響應的轉換。預處理過程還會刪除程序中的註釋和多餘的空白字符。spa

預處理指令是以#號開頭的代碼行。#號必須是該行除了任何空白字符外的第一個字符。#後是指令關鍵字,在關鍵字和#號之間容許存在任意個數的空白字符。
整行語句構成了一條 預處理指令,該指令將 在編譯器進行編譯以前對源代碼作某些轉換
  
 

   指令             用途code

         #            空指令,無任何效果blog

         #include    包含一個源代碼文件編譯器

         #define     定義宏string

         #undef     取消已定義的宏it

         #if          若是給定條件爲真,則編譯下面代碼io

         #ifdef       若是宏已經定義,則編譯下面代碼編譯

         #ifndef     若是宏沒有定義,則編譯下面代碼class

         #elif         若是前面的#if給定條件不爲真,當前條件爲真,則編譯下面代碼

         #endif      結束一個#if……#else條件編譯塊

         #error      中止編譯並顯示錯誤信息

    #else       略

    #error     指令將使編譯器顯示一條錯誤信息,而後中止編譯。

         #line        指令能夠改變編譯器用來指出警告和錯誤信息的文件號和行號。
         #pragma  指令沒有正式的定義。編譯器能夠自定義其用途。典型的用法是禁止或容許某些煩人的警告信息。
 
文件包含
  
  在程序中包含頭文件有兩種格式:
        #include <my.h>
        #include "my.h"
l第一種方法是用尖括號把頭文件括起來。這種格式告訴預處理程序在編譯器自帶的或外部庫的頭文件中搜索被包含的頭文件。第二種方法是用雙引號把頭文件括起來。這種格式告訴預處理程序在當前被編譯的應用程序的源代碼文件中搜索被包含的頭文件,若是找不到,再搜索編譯器自帶的頭文件。
    採用兩種不一樣包含格式的理由在於,編譯器是安裝在公共子目錄下的,而被編譯的應用程序是在它們本身的私有子目錄下的。一個應用程序既包含編譯器提供的公共頭文件,也包含自定義的私有頭文件。採用兩種不一樣的包含格式使得編譯器可以在不少頭文件中區別出一組公共的頭文件。     

   貼上有用的代碼:

複製代碼
#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

}
複製代碼
相關文章
相關標籤/搜索