關於C的預編譯 巨集定義 的一些使用 不斷積累中

2021-09-06 05:24:03 字數 1161 閱讀 3286

標頭檔案 防止重複包含

根據#define 和條件編譯 #ifdef、#ifndef #else #endif  最經常的使用是 標頭檔案 防止重複包含。

但是 使用

#pragma  once

更好,現在 gcc cl.exe 都支援,它不但**更少,而且不用為巨集起名字,更好。

#pragma 說明編譯器資訊//用法複雜,參考

#warning 顯示編譯警告資訊

#error 顯示編譯錯誤資訊

可以在這些條件編譯中 給出某條件下的 提醒。比如 要求定義的巨集沒有定義,就#error,停止編譯。

條件編譯 中的多個條件,多個巨集同時判斷

還有 條件編譯中 ,比如 同時判斷倆條件的

#ifdef ( a && b)該怎麼寫呢?如果是ifdef 或者 ifndef 就不能這麼寫了。

得用#if (a==1 && b==2)這種寫法了。試著去掉 #define b 2,條件裡面的 編譯資訊 和 輸出 就不會顯示了。

#include #include 

using

namespace

std;

int main(int argc,char **argv)

剛發現 ifdef也是可以多個條件的:

類似:#if defined _debug || defined vld_force_enable

//

剛從boost-jam-3.1.18 的原始碼(sf.net鏈結)中的pwd.c 中看到的,積累下。

//看來cl貌似還定義了 nt 變數,gnu gcc定義了 __gnuc__

/*mingw on windows declares path_max in limits.h

*/#if defined(nt) && ! defined(__gnuc__)#include

#define path_max _max_path

#else

#include

#if defined(__como__)#include

#endif

#endif

vld是乙個 檢測 記憶體洩漏的程式設計工具包。值得推薦!以前遇到段錯誤,或者記憶體沒有合理的釋放掉的情況,也不知道該怎麼辦。用這個 好點。段錯誤 貌似 無法有效的檢測呢。。野指標!

C C 關於預編譯的一些理解

自己的一些理解 條件編譯的乙個重大作用就是防止標頭檔案的重複定義,ifndef abc h define abc h endif 假如檔案abc h之前沒有被 define過,在這裡就會 define,從而保證了乙個檔案只可能被執行一次,甚至可以把 define abc h看成該檔案是否被執行過的一...

關於巨集定義的一些理解

以前也聽說過巨集,但是沒有引起重視,現在看到什麼巨集之類的,感覺很是高深,於是查詢資料n久,算是對其乙個大致的了解。巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯。1.不帶引數 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字...

C 中的一些預編譯指令

1 define和 undef 用法 define debug undef debug define告訴編譯器,我定義了乙個debug的乙個符號,他類似乙個變數,但是它沒有具體的值,可以將它看為乙個符號而已。undef就是刪除這個符號的定義。如果符號debug沒定義過,則 undef不起作用,否則 ...