define的錯誤使用

2021-06-25 19:21:52 字數 555 閱讀 6969

在mfc當中我們比較容易看到用#define定義的巨集,但是紅定義卻比較容易出錯。

以下是修改《effective c++》中的

#define call_with_max(a,b) (a)>(b)?(a):(b);

當我們計算

int a=5;

int b=0;

int c=call_with_max(++a,b);

時候 我們會對a加了兩次這是因為#define 是在預編譯時候就進行替換。所以在編譯的時候,其實處理的是

int c=(++a)>(b)?(++a):(b);

而當a>b的時候,a加了兩次,小於等於時候加了一次。

python 使用的的 define

例如c有一段預定義常量如下 define disc cmd 0x10 define disc cmd response 0x11 define get cmd 0x20 define get cmd response 0x21 define set cmd 0x30 define set cmd r...

C C 中的 define的使用

一 define在c c 中的使用 在 或c 語言源程式中允許用乙個識別符號來表示乙個字串,稱為 巨集 被定義為 巨集 的識別符號稱為 巨集名 在編譯預處理時,對程式中所有出現的 巨集名 都用巨集定義中的字串去代換,這稱為 巨集代換 或 巨集展開 巨集定義是由源程式中的巨集定義命令完成的。巨集代換是...

const與define的使用區別

1 const用於類成員變數定義,一旦定義且不能改變其值。define定義全域性常量,在任何地方都可以訪問。2 define不能在類中定義而const可以。3 const不能在條件語句中定義常量 if but if 4 const採用乙個普通的常量名稱,define可以採用表示式作為名稱。const...