(一)基本知識
預處理器指示符以「#」號開頭標識,處理這些指示符的程式叫做預處理器。
#include指示符讀入指定檔案的內容,它有兩種格式:
#include
#include "my_file.h"
如果檔名用<>括起來,表明這個檔案是乙個工程或標準標頭檔案,查詢過程會先檢查預定義的目錄,我
們可以通過設定環境變數或命令列來修改這些目錄。如果檔名用「」引起來,則表明該檔案是使用者提供的
標頭檔案,查詢該檔案時將從當前檔案所在目錄開始。
由於標頭檔案的巢狀關係,乙個標頭檔案可能會被再次包含,條件指示符可防止這種標頭檔案的重複處理,例
如:#ifndef bookstore_h
#define bookstore_h
//bookstore.h的內容
#endif
#ifndef指明,如果某個巨集未被定義,要怎麼處理
#ifdef指明,如果某個巨集已被定義,要怎麼處理。
比如:int main()
enum idd;
typedef struct msgmsg;
msg _msg = ;
相當於:
msg _msg = ,
};3、記錄檔名
#define _get_file_name(f) #f
#define get_file_name(f) _get_file_name(f)
static char file_name = get_file_name(__file__);
4、得到乙個數值型別所對應的字串緩衝大小
#define _type_buf_size(type) sizeof #type
#define type_buf_size(type) _type_buf_size(type)
char buf[type_buf_size(int_max)];
--> char buf[_type_buf_size(0x7fffffff)];
--> char buf[sizeof "0x7fffffff"];
這裡相當於:
char buf[11];
C C 預編譯指令和條件編譯
1.常見的預編譯指令和條件編譯項有如下這些 define undef ifdef ifndef if elif else endif 1 define 定義乙個預處理巨集 2 undef 取消巨集的定義 3 if 編譯預處理中的條件命令,相當於c語法中的if語句 4 ifdef 判斷某個巨集是否被定...
預編譯命令總結
今天覆習了下條件編譯命令,總結如下。常用的有三種預編譯命令 巨集定義,檔案包含和條件編譯。1 巨集定義即是字串替換。巨集分為無參巨集和含參巨集。定義巨集的位置可以在函式外部也可以在函式內部 vc 2008 測試通過 巨集的作用域是從定義處到取消定義命令 undef 巨集名 之間的部分,若無顯式的 u...
預編譯處理命令
if endif是c 種的條件編譯預處理命令 有兩種格式 1 ifdef 標示符 程式段1 else 程式段2 endif 表示 如果標示符已經被 define命令定義過,則編譯程式段1,否則編譯程式段2 2 if 表示式 程式段1 else 程式段2 endif 表示 如果表示式為真,則編譯程式段...