gpt4 book ai didi

c - 定义宏中的括号

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:33 25 4
gpt4 key购买 nike

什么时候有必要将定义宏的整个(正确的)表达式放在括号中?

如果我做类似的事情

#define SUM(x, y) ((x)+(y))

我必须将正确的表达式放在括号中,因为“+”在 C 中的优先级较低(如果我在以下上下文中使用它,它就不会工作 SUM(x, y) * 5U )

如果我使用最高优先级的运算符,是否仍然需要这些括号,例如

#define F foo()

甚至

#define ACCESS(x, y) (x)->(y)

是否存在像 SUM() 示例那样破坏实际含义的表达式?)

对于我使用的优先规则 http://en.cppreference.com/w/c/language/operator_precedence

最佳答案

使用括号是避免出现一些大错误的好习惯。目前您可能认为您的运算符具有更高的优先级,但假设您正在制作代码的头文件并将其交给您的 friend ,他使用该文件中的宏且该函数具有更高的优先级,那么那时它将是调试代码非常痛苦。作为程序员,您可以通过添加括号来节省这段时间。

关于c - 定义宏中的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35321049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com