找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1087|回复: 5
打印 上一主题 下一主题
收起左侧

C语言里面这种带括号的宏定义有什么作用

[复制链接]
跳转到指定楼层
楼主
ID:700956 发表于 2023-4-7 12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • #define                C_PORTA                                        (PORTA)
  • #define                C_PORTB                                        (PORTB)
  • #define                C_PORTC                                        (PORTC)
  • #define                CST_KEY1_BIT                        (C_PORTB & C_KEY_BIT6)                        //定义按键地址


像这种,定义的时候最后的参数带括号是啥意思?看不太懂
下面是原贴。
http://www.51hei.com/bbs/dpj-226114-1.html



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:69038 发表于 2023-4-7 16:55 | 只看该作者
#define 即 1(源 )映射到 2(目标)上 即在“PORTA”出现的在方用“C_PORTA"代替。至于参数带括号,应无差别,至少Keil C51是这样的
回复

使用道具 举报

板凳
ID:883242 发表于 2023-4-7 20:12 | 只看该作者
用括号包起来是防止展开后发生歧义的,括号还是很简单的,你还没见过用do {} while(0)把几条语句包起来防止展开后发生歧义的。
回复

使用道具 举报

地板
ID:291668 发表于 2023-4-7 20:43 | 只看该作者
没啥区别,编译结果一样的。可能是个人习惯吧
回复

使用道具 举报

5#
ID:485350 发表于 2023-4-8 09:39 | 只看该作者
#define CALC(X)  X + 3
   VALUE = (CALC(1) * 3)
   展开 VALUE = 1 + 3 * 3      结果VALUE为10

#define CALC(X) (X + 3)
   VALUE = (CALC(1) * 3)
   展开 VALUE = ((1 + 3) * 3)    结果VALUE为12
回复

使用道具 举报

6#
ID:59202 发表于 2023-4-8 20:18 | 只看该作者
define后面的表达式用括号括上是正确且严谨的写法,三楼说的是对的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表