名稱解釋
#define
巨集定義#undef
撤銷已定義過的巨集
#include
使編譯程式將另一原始檔嵌入到帶有 #include 的原始檔中
#if / #else / #elif / #endif
#if 的一般含義是如果 #if 後面的常量表示式為 true,則編譯它與 #endif 之間的**,否則跳過這些**。命令#endif 標識與乙個 #if 塊結束。#else 命令類似 else 語句,#else 建立在 #if 失敗下的另一選擇。#elif 命令與 else if 相同,構成 if -else if階梯狀的語句,可以進行多種編譯選擇
#ifdef / #ifndef
表示有定義與無定義
#line
改變當前行數和檔名稱,形式:#line number [「filename」]
#error
編譯程式時,只要遇到 #error 就會生產乙個編譯錯誤資訊,並停止編譯
#pragma
允許編譯程式傳送各種指令
_ line_
表示正在編譯檔案的行號
_ file_
表示正在編譯檔案的名字
_date _
表示編譯時刻的日期字串
_ time_
表示編譯時刻的時間字串
_stdc _
判斷檔案是否定義為標準 c 程式
#define :實現定義的替換,常用於常數的替換,錯誤碼的替換,方便了修改。巨集在使用時才展開。
eg:#define pi 3.141592654
#define 也可用來定義一些字串,比如檔案路徑:
#define eng_path_1 e:\english\listen_to_this\listen_to_this_3
注:反斜槓作為接續符時,在本行其後面不能再有任何字元,空格都不行。如下:只有最後乙個反斜槓才是接續符。
#define eng_path_3 e:\english\listen_to_this\listen\
_to_this_3
#define sec_a_year (60*60*24*365)ul
//注意資料溢位問題
定義乙個巨集函式:
#define sqr(x) ((x) * (x))
//為了減少替換錯誤,表示式通過括號限定範圍
注:巨集函式被呼叫時是以實參換形參,而不是「值傳送」。
條件編譯的功能使得我們可以按不同的條件去編譯不同的程式部分,因而產生不同的目標**檔案。這對於程式的移植和除錯是很有用的。
//第一種形式:
#ifdef 識別符號
程式段1
#else
程式段2
#endif
解釋:如果識別符號1 已被 #define 定義(條件為真),則執行 #ifdef ,否則執行 #else,如果程式段 2 不存在,可省略 #else。
//第二種形式:
#ifndef 識別符號
程式段1
#else
程式段2
#endif
解釋:與上述第一種情況相反。
//第三種形式:
#if 常量表示式
程式段1
#else
程式段2
#endif
解釋:如常量表示式的值為真(非0),則對程式段 1 進行編譯,否則對程式段 2 進行編譯。使程式在不同條件下,完成不同的功能。
檔案包含是預處理的乙個重要功能,它可以用來把多個原始檔連線成乙個原始檔進行編譯,結果將生成乙個目標檔案。 c 語言提供 #include 命令來實現檔案包含操作,實際是巨集替換的延伸。
格式一:
#include
標頭檔案:表示預處理到系統規定的路徑中去獲得這個標頭檔案,找到檔案後,用檔案內容替換該語句。
格式二:
#include
"filename.h"
雙引號表示預處理應當在當前目錄中查詢檔案名為 filename 的檔案,若沒有找到,則按照系統指定的路徑資訊,搜尋其他目錄,找到檔案後,用檔案內容替換該語句。
注:(1)#include 是將已經存在的檔案內容嵌入到當前檔案中;
(2)#include 的路徑:支援相對路徑,格式如:
.代表當前目錄;. . 代表上層目錄。
MySQL學習筆記(13) 預處理
prepare statement,一種預先編譯sql指令的方式 然後命令執行 預處理不同於直接處理,是將要執行的sql指令先傳送給伺服器編譯,然後通過指令執行 傳送預處理 prepare 預處理名字 from 要執行的sql指令 執行預處理 execute 預處理名字預處理管理 預處理屬於會話級別...
C語言預處理
c語言中編譯預處理的三種形式的命令 巨集定義,檔案包含,條件編譯命令。1 巨集定義主要是 define,undef 如下 define pi 3.1415926 不帶引數的巨集定義 define max a,b a b?a b 帶引數的巨集定義 說明 巨集定義在c語言與c 語言中是相通的。下面舉例說...
C語言預處理
預處理 系統自動自動呼叫預處理程式對程式中 號開頭的預處理部分進行處理,處理完畢後可以進城源程式的編譯階段。預定義 一些預定義符號 常用於除錯 file 正在預編譯的源檔名 line 當前行號 只有這個是整數常量,其他是字串常量 function 當前所在函式名 date 當前日期 time 當前時...