讀《高質量C C 》 預處理

2022-08-13 18:51:11 字數 1142 閱讀 5601

#編譯預處理

編譯預處理器能識別的指令,只在預編譯期起作用,不會進入編譯階段。而常用的預編譯處理,主要有檔案包含,巨集定義,條件編譯、#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...