c中括号的使用

Gui*_*lle 1 c parentheses

关于括号的使用,以下 2 个陈述有什么区别?(没有指针左右)

#define UART1_BAUD (460800)
#define UART2_BAUD 9600
Run Code Online (Sandbox Code Playgroud)

pmg*_*pmg 5

当宏通常用作表达式中的操作数时,没有区别。

但是请注意,在

#define A 4 + 7
#define B (5 + 3)
Run Code Online (Sandbox Code Playgroud)

如果您将宏用作

int a = 6 * A; // 6 * 4 + 7 ==> 24 + 7
int b = 6 * B; // 6 * (5 + 3) ==> 6 * 8
Run Code Online (Sandbox Code Playgroud)

根据经验:在宏中使用和滥用括号

当括号紧跟在宏名后面时,它是一个类似函数的宏

#define SQUARE(BAR) ((BAR) * (BAR)) // use and abuse parenthesis
Run Code Online (Sandbox Code Playgroud)

  • “没有任何区别”是不正确的。“UART2_BAUD”可以在使用串联运算符“##”形成标识符的情况下使用。`UART1_BAUD` 不能。 (4认同)