檔案包含
#include <> //包含開發環境提供的庫標頭檔案
#nclude "" //包含自己的標頭檔案
也可以使用相對路徑或絕對路徑
如#include ''.\a\b.h"
#include "c:\a\b.h"
內部包含暗哨
#ifdef _a_h_
#define _a_h_
#endif //防止標頭檔案重複編譯
外部包含暗哨
# if !defined(_a_h_)
#include
#endif //可以避免多次查詢和開啟標頭檔案的操作,提高編譯速度
標頭檔案包含的合理順序
1.包含自定義檔案
2.包含第三方庫標頭檔案
3.包含標準標頭檔案
條件編譯
# if !defined(win32)
#error error:win32 do not exist
#endif //若是沒有巨集定義win32,那麼把#error後的字串行輸出到螢幕,程式不會竟如編譯階段。
用於輸出與平台,環境有關的資訊
#和##運算子
#:構串操作符
例:#define stringf(x) 」x=10「
printf("%s",string(a));
結果輸出x=10 不是想要出現的a=10,那是因為」「裡面的字元是不會被巨集定義替換的 ,若是換為
#define string(x) #x」=10「
printf("%s",stringf(a)); 就ok了
#作用就是將實參的字串行轉換為字串常量。
##:合併操作符
#define meto(x,y) x##y##x
printf("%s",meto(me,to));
!這時編譯器會報錯,因為##合併生成的是」識別符號「,若是沒有實現定義這個識別符號,就會報錯。若是之前定義了
char *metome = "metome";就ok了
預定義符號常量:
_line_ 引用該符號的語句的**行號
_file_ 引用該符號的語句原始檔名稱
_date_ 引用該符號的語句所在原始檔被編譯的日期(字串)
_time_ 引用該符號的語句所在原始檔被編譯的時間(字串)
_timestamp_ 引用該符號的語句所在原始檔被編譯的日期和時間(字串)
_stdc_ 標準c語言環境都會定義該巨集以標識當前環境
以上是ansi c的預定義符號常量,編譯器也會在此基礎上定義一些自己的巨集,如——cplusplus.
讀《高質量C C 》 預處理
編譯預處理 編譯預處理器能識別的指令,只在預編譯期起作用,不會進入編譯階段。而常用的預編譯處理,主要有檔案包含,巨集定義,條件編譯 error pragma以及預定義符號常量 1 檔案包含 include 例如 include 開發環境提供的庫標頭檔案 include myhead.h 使用者自定義...
高質量程式設計C C
一 請填寫bool float,指標變數與 零值 比較的 if 語句。10 分 請寫出 bool flag 與 零值 比較的 if 語句。3 分 標準答案 if flag if flag 如下寫法均屬不良風格,不得分。if flag true if flag 1 if flag false if f...
高質量c c 程式設計
第1章 為防止標頭檔案被重複引用,應當用 ifndef define endif 結構產生預處理塊 使用 include引用標準庫標頭檔案,使用 include filename.h 引用非標準庫標頭檔案 標頭檔案中只存放 宣告 不存放 定義 第2章 應在關聯性不強的語句間新增空行 一行 只做一件事...