c語言總結:預處理命令
2019-3-30
預處理命令可以提高程式設計效率,但其不是c語句,編譯系統不能直接對它們進行編譯,而是在編譯前會轉換為c源程式,然後編譯時去掉了預處理命令。
1. 巨集定義
巨集定義在使用時,系統只是用巨集名之後的部分替換語句中包含的巨集名,如果是含參巨集定義,將實際的引數替換定義時字串中的對應引數。所以在寫巨集定義時要注意,巨集只是內容的替換,所以要嚴格遵守語法規則。
//無參巨集定義
# define pi 3.1415926
//含參巨集定義
# define s(a, b) a*b
area =s(
3,2)
;// area = 6
//限制巨集定義的作用於
# define pi 3.1415926..
.//pi 的有效範圍
# undef pi
2. 檔案包含
c源**常包含標頭檔案,也是一種預處理命令。
有兩種包含形式,尖括號、雙撇號:
#include
#include
"file.h"
二者區別在於,用尖括號時,系統到存方c庫函式標頭檔案的目錄中尋找要包含的檔案,這稱為標準方式。用雙撇號時,系統先在使用者當前目錄中尋找要包含的檔案,若找不到,再按標準方式查詢。
一般來講,如果呼叫庫函式而用#include 命令來包含標頭檔案,常用尖括號,以節省查詢時間。若包含的是使用者自己定義編寫的檔案,一般用雙撇號(不在當前目錄中的檔案需給出檔案路徑)。
3. 條件編譯
通過人為控制,使得程式中的部分內容在一定條件下才進行編譯,即對該部分內容指定編譯的條件。
幾種形式:
//1)若識別符號被定義過,編譯程式段
# ifdef 識別符號..
.# else..
.# endif
//2)若識別符號未被定義過,編譯程式段
# ifndef 識別符號..
.# else..
.# endif
//3)當表示式為真時,編譯程式段,可節省編譯所用時間。
# if 表示式..
.# else..
.# endif
程式示例:
#include
#define run
void
main()
C語言預處理命令總結
包含標準庫的標頭檔案建議用尖括號,包含自定義的標頭檔案建議用雙引號。如 include include myheader.h 巨集定義是用巨集名來表示乙個字串,在巨集展開時又以該字串取代巨集名,這只是一種簡單的替換。字串中可以含任何字元,可以是常數,也可以是表示式,預處理程式對它不作任何檢查,如有錯...
C語言 預處理命令
我們可以在c源程式中插入傳給編譯程式的各中指令,這些指令被稱為預處理器指令,它們擴充了程式設計的環境。現把常用的預處理命令總結如下 1.預處理程式 按照ansi標準的定義,預處理程式應該處理以下指令 if ifdef ifndef else elif endif define undef line ...
C語言 預處理命令
一 巨集定義 在 語言源程式中允許用乙個識別符號來表示乙個字串,稱為 巨集 被定義為 巨集 的識別符號稱為 巨集名 在編譯預處理時,對程式中所有出現的 巨集名 都用巨集定義中的字串去代換,這稱為 巨集代換 或 巨集展開 巨集定義是由源程式中的巨集定義命令完成的。巨集代換是由預處理程式自動完成的。在 ...