c中括号的使用

问题描述

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

#define UART1_BAUD (460800)
#define UART2_BAUD 9600

解决方法

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

但是请注意,这里有区别

#define A 4 + 7
#define B (5 + 3)

如果你使用宏

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

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

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

#define SQUARE(BAR) ((BAR) * (BAR)) // use and abuse parenthesis

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...