打印

keil c51支持可变参数宏定义吗?

[复制链接]
579|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yufe|  楼主 | 2022-4-7 20:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
keil c51支持可变参数宏定义吗?

使用特权

评论回复
沙发
chuxh| | 2022-4-7 20:55 | 只看该作者
你想做什么

使用特权

评论回复
板凳
yufe|  楼主 | 2022-4-7 20:58 | 只看该作者

我对一个byte的指定bit置1的话,我可以宏定义 #define set(byte, bit)   (byte | (1<< bit))
但是如果我对一个byte某一些bit要置1的话呢?

使用特权

评论回复
地板
xxrs| | 2022-4-7 21:03 | 只看该作者
用宏 #define set(byte, bit1,bit2...)

使用特权

评论回复
5
yufe|  楼主 | 2022-4-7 21:06 | 只看该作者

我想用这样的方式来操作。可是这种可变参数宏定义不知道如何操作?

使用特权

评论回复
6
dingy| | 2022-4-7 21:08 | 只看该作者
#define set(byte, bit1,bit2)   (byte|(1<<bit1)|(1<<bit2))

使用特权

评论回复
7
dengdc| | 2022-4-7 21:10 | 只看该作者
宏定义,现在确实很多时候可以使用到的。

使用特权

评论回复
8
yszong| | 2022-4-7 21:12 | 只看该作者
你这是针对2个参数的可以这样操作,我的意思是后面的参数不确定。可能只有bit1,也可能有bit1,bit2,也可能有bit1,bit2,bit3,bit4.参数可能从1个到8个不等。

使用特权

评论回复
9
renyaq| | 2022-4-7 21:20 | 只看该作者
嗯,如果确定个数就肯定可以像你那样定义了。

使用特权

评论回复
10
yufe|  楼主 | 2022-4-7 21:22 | 只看该作者
好象不行

汇编下可以

使用特权

评论回复
11
yufe|  楼主 | 2022-4-7 21:24 | 只看该作者
汇编下怎么操作?

使用特权

评论回复
12
yszong| | 2022-4-7 21:27 | 只看该作者
C51不支持

使用特权

评论回复
13
llljh| | 2022-4-7 21:29 | 只看该作者
我查了keil帮助说明也没有查到,应该是keil c51不支持可变参数宏定义了。

使用特权

评论回复
14
dingy| | 2022-4-7 21:31 | 只看该作者
你可以试试,理论上说宏定义是c语言的事情,和keil c51没关系

使用特权

评论回复
15
huangchui| | 2022-4-7 21:35 | 只看该作者

明确告诉你,Keil C51 不行。
可变长宏(Variadic macro)是C99及以上标准才支持的特性。C51与标准C都有很多地方不兼容,要支持C99,永远别想了。

使用特权

评论回复
16
jiajs| | 2022-4-7 21:37 | 只看该作者
不支持

使用特权

评论回复
17
yufe|  楼主 | 2022-4-7 21:39 | 只看该作者
好的,我明天去单位试一下,多谢各位大侠了哈

使用特权

评论回复
18
tpgf| | 2022-5-1 16:50 | 只看该作者
还没有用过这种方法呢

使用特权

评论回复
19
wakayi| | 2022-5-1 17:18 | 只看该作者
怪不得我从来没有用过呢

使用特权

评论回复
20
wowu| | 2022-5-1 17:27 | 只看该作者
这种用法很是灵活

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

983

主题

10170

帖子

1

粉丝