1. 程式人生 > >C++define巨集的邊際效應

C++define巨集的邊際效應

const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查。而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換可能會產生意料不到的錯誤(邊際效應)

舉例說明

#define MIN(a, b) a > b ? b : a

這句巨集定義就會帶來意想不到的問題,比如我在這樣使用時:

num = b + MIN(num1, num2);

num的值一直是num1、num2兩個中的最小值,也就是說講b的值直接作為0處理了

正確應該為:

#define MIN(a, b) (a > b ? b : a)