C 預處理(宏定義,文件包含,條件編譯)

本文解決的問題:

      1.  什麼是預處理

      2. 文件包含中尖括號和引號的區別    #include <my.h>   #include "my.h"

      3.  常用的 #define  #ifndef 是什麼 


注:轉載於C預處理小結


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

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

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

   指令             用途

         #            空指令,無任何效果

         #include    包含一個源代碼文件

         #define     定義宏

         #undef     取消已定義的宏

         #if          如果給定條件爲真,則編譯下面代碼

         #ifdef       如果宏已經定義,則編譯下面代碼

         #ifndef     如果宏沒有定義,則編譯下面代碼

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

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

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

    #else       略

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章