C語言再學習13 預處理(一)

2021-09-26 04:05:49 字數 2413 閱讀 3273

名稱解釋

#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 當前時...