#define,EQ(a,b)((a)==(b))是什么意思?

rya*_*ata 0 c c-preprocessor

我已经给出了C代码,其中heading语句包括以下内容:

#define, EQ(a, b) ((a) == (b))
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

Jam*_*lis 6

它没有任何意义:这段代码是不正确的.紧跟在a之后的令牌#define必须是标识符,而,不是.

如果,将被移除,这将定义一个函数宏命名EQ这两个参数.


pb2*_*b2q 6

逗号是一个错误,会阻止代码编译:我会认为这是一个错字.

鉴于:

#define EQ(a, b) ((a) == (b))
Run Code Online (Sandbox Code Playgroud)

这为相等运算符定义了一个宏==.

稍后在代码中使用此宏,您可以键入,例如:

if (EQ(2+2, 4))
Run Code Online (Sandbox Code Playgroud)

代替:

if (2+2 == 4)
Run Code Online (Sandbox Code Playgroud)

真的不是很有用.