#編譯預處理
編譯預處理器能識別的指令,只在預編譯期起作用,不會進入編譯階段。而常用的預編譯處理,主要有檔案包含,巨集定義,條件編譯、#error、#pragma以及預定義符號常量
1、檔案包含 #include
例如:#include // <> 開發環境提供的庫標頭檔案
#include "myhead.h" // "" 使用者自定義標頭檔案,會在當前檔案目錄尋找
#include "..\public\common.h"
2、巨集定義 #define
例如#define null 0
#define free( m )do\
}while( 0 )
3、條件編譯
a、#if...#else...#endif
例如#if 1
#define null 0
#elif 0
#define null (void*)0
#endif
b、#ifdef...#else...#endif
例如:#ifdef __cplusplus
#define null 0
#else
#define null (void*)0
#endif
c、#ifndef 等同於 #if !define
d、#undef 取消巨集定義
例如:#undef null
4、#error
5、#pragma
#pragma pack( puch,8 ) // 物件成員對齊位元組數
#pragma pack( pop )
#pragma warning( disable:4069 ) // 不產生 c4069 號編譯警告
#pragma comment( lib,"kernel32.lib" );
#pragma comment( lib,"user32.lib" );
#pragma comment( lib,"gdi32.lib" );
例如:#pragma pack( push,8 ) // sizeof( worker ) = 12
#pragma pack( push,1 ) // sizeof( worker ) = 10
struct worker
;
《高質量C C編譯預處理
檔案包含 include 包含開發環境提供的庫標頭檔案 nclude 包含自己的標頭檔案 也可以使用相對路徑或絕對路徑 如 include a b.h include c a b.h 內部包含暗哨 ifdef a h define a h endif 防止標頭檔案重複編譯 外部包含暗哨 if def...
讀《高質量C C程式設計指南》
林銳的本書我再一年多以前看過這本書,印象最深的是這本書的附錄 大學十年 如果把寫 想象為搭積木,那麼用一句話描述這本書的內容就是,我們要對 c c 語言這個小積木瞭如指掌,用它們組合成我們想要的圖形,其中不能有任何縫隙。問題產生原因 我們習慣了人與人之間可以含混的語言,原因在於人的糾錯能力太強了。但...
高質量程式設計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...