幾個有用的巨集

2021-07-03 14:42:33 字數 1084 閱讀 9220

1.  列印錯誤資訊

如果程式的執行必須要求某個巨集被定義,在檢查到巨集沒有被定義是可以使用#error,#warning列印錯誤(警告)資訊,如:

#ifndef __unix__

#error "this section will only work on unix systems"

#endif

只有__unix__巨集被定義,程式才能被正常編譯。

2.  方便除錯

__file, __line, __function是由編譯器預定義的巨集,其分別代表當前**所在的檔名,行號,以及函式名。

可以在**中加入如下語句來跟蹤**的執**況:

if(err)

3.  c/c++的混合程式設計

函式int foo(int a, int b);

在c語言的該函式在編譯器編譯後在庫中的名字為_foo,而c++中該函式被編譯後在庫中的名字為_foo_int_int(為實現函式過載所做的改變)。如果c++中需要使用c編譯後的庫函式,則會提示找不到函式,因為符號名不匹配。c++中使用extern 「c」解決該問題,說明要引用的函式是由c編譯的,應該按照c的命名方式去查詢符號。

如果foo是c編譯的庫,如果要在c++中使用foo,需要加如下宣告,其中__cplusplus是c++編譯器預定義的巨集,說明該檔案是被c++編譯器編譯,此時引用c的庫函式,就需要加extern 「c」。

#ifdef __cplusplus

extern 「c」

#endif

4.  可變引數

#define debug(format, args...) fprintf (stderr, format, args)

#define debug(format, ...) fprintf (stderr, format, __va_args__)

或者#define debug(format, ...) fprintf (stderr, format, ## __va_args__)

前兩者存在多餘逗號問題,第三個巨集使用##去掉可能多餘的逗號。

幾個有用的巨集

分類 c c 1.列印錯誤資訊 如果程式的執行必須要求某個巨集被定義,在檢查到巨集沒有被定義是可以使用 error,warning列印錯誤 警告 資訊,如 ifndef unix error this section will only work on unix systems endif 只有 u...

Xmind幾個有用的技巧

xmind是乙個很好的思維導圖工具,是學習研究總結的好幫手。xmind功能很豐富,這裡只是簡要列出幾個比較有用的技巧。選中乙個xmind元素 專業名詞叫 主題 後,一般在右下角會出現 屬性 如果你不想老是看到單調的格式,一定要善用屬性。具體細節就選中乙個xmind元素,自己試試吧!這個問題曾經讓筆者...

幾個有用的計時的類

很多時候,我們需要計算某段 的操作所耗費的時間,我們往 往會這樣寫 第一種情況,精確到毫秒。clock t start null,end null double duration 0 start clock operation statements here end clock duration d...