__line__
__file__
__date__
__time__
__stdc__
__timestamp__
20、巨集定義防止錯誤使用小括號包含。
例如:有問題的定義:#define dump_write(addr,nr)
應該使用的定義: #difne do(a,b) dowhile(0)
例如:if(addr)
dump_write(addr,nr);
else
do_somethong_else();
巨集展開以後變成這樣:
if(addr)
;else
do_something_else();
gcc 在碰到else前面的「;」時就認為if語句已經結束,因而後面的else不在if語句中。而採用do{} while(0)的定義,在任何情況下都沒有問題。而改為 #difne do(a,b) dowhile(0) 的定義則在任何情況下都不會出錯。
C C 常用預定巨集
cplusplus 如果源 是cpp,則 cplusplus定義為1,如果源 是c,則 cplusplus就是未定義.舉例 cpp檔案中使用到了c檔案實現的函式,為了避免連線錯誤,需要使用extern c 宣告。ifdef cplusplus extern c endif date 11個字元的字串...
C,C 巨集中 和
巨集中的 的功能是將其後面的巨集引數進行字串化操作 stringizing operator 簡單說就是在它引用的巨集變數的左右各加上乙個雙引號。如定義好 define string x x之後,下面二條語句就等價。char pchar hello char pchar string hello 還...
C C 中 和 巨集
在c語言 c 中,巨集 macro 是屬於編譯時期 而非執行時期 的概念,採用關鍵字define進行定義。它只是一種簡單的字串替換,根據是否帶引數分為無參和帶參。它的作用還是很大的,比如 提高可移植性,可讀性,方便性 等等,常見就是替換變數,防止重複包含標頭檔案等 define max 10 ifn...