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...