define 巨集定義 的小問題

2021-08-20 17:33:38 字數 796 閱讀 1961

這裡說一下define在使用時用出現的一些問題,是我在寫題的時候遇到的。

一般情況下都是使用define定義的常數,比如說

#define inf 999999999

#define inf 0x3f3f3f

const int inf=99999999;

當然這裡不如const 定義的時候更嚴密,因為const說明了變數的型別。

還有就是我們利用define函式的時候,也就是帶引數的巨集。比如#define max(a,b) a>b?a:b就十分容易出現錯誤的包括機器和人理解上的錯誤。所以我們在使用的時候盡量在每一層次的時候都加乙個擴號避免錯誤帶來的麻煩。

#define add(a,b) a+b.

c * add(a,b) * d

得應該是c*(a+b)*d, 然而機器讀的時候就是c*a+b*d.

我的理解就是說define 巨集定義的函式這裡的"(「和」)"不再是優先順序運算子了。不能再代表小括號的。其他的可以看看下面**的具體例項,自己寫一下的,加深一下自己的理解。

#include #include #define add(x) x+x

#define add(x) (x)+(x)

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

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

int main()

define巨集定義

預處理指令 以 開頭的行,都預處理指令,用於指示編譯器做一些預處理工作。比如 include h 注 預處理指令不是語句,行尾不要加分號 define的兩種用法 1.定義乙個 數值 2.定義乙個 算式 注 工程中應該避免使用這兩種方式 定義乙個值 define pi 3.14 int main 定義...

巨集定義 define

巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨集名替換為字串。1 define printx printf d n x 在c程式中,以 字元開頭的 都是一條c預處理器語句。預...

define巨集定義

include include define sub x,y x y define access before element,offset,value sub element,offset value using namespace std int main access before array...