打印

C语言中宏定义值能否直接传递给参数

[复制链接]
2040|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
霜之哀息|  楼主 | 2018-1-9 16:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如我需要传递一个固定值给函数,值的类型是unsigned char,我的函数定义的形参类型也是unsigned char。现在我需要封装在头文件上引用,我想把这个固定值用宏定义放置,这个宏定义的值直接放进函数是不是会出问题呢?

相关帖子

沙发
ayb_ice| | 2018-1-9 16:33 | 只看该作者
void Test(u8 par)
{
        ...
}

#define MACRO_Test()        Test(100)

使用特权

评论回复
板凳
chentianxi| | 2018-1-9 16:47 | 只看该作者
把头文件包含进去就不会有问题

使用特权

评论回复
地板
jack821119| | 2018-1-10 10:17 | 只看该作者
好困

使用特权

评论回复
5
caijie001| | 2018-1-10 15:38 | 只看该作者
可以传的
比如
#define ABC  100
u8 abc_test(u8 abc)
{
.........
}

abc_test(ABC);

您是这样子传还是向1楼那样子?
都可以的

使用特权

评论回复
6
吾要单片机| | 2018-1-11 21:03 | 只看该作者
宏替换只是字符串简单替换,这是基本原则。

使用特权

评论回复
7
霜之哀息|  楼主 | 2018-1-11 21:43 | 只看该作者
懂了,后面自己做了实验,抱歉没及时回复啊,今天早上考试,前两天复习去了

使用特权

评论回复
8
ddllxxrr| | 2018-1-12 08:04 | 只看该作者
可以是可以,一般最好别这样传,尽量不用宏,为什么不好好写个函数呢

使用特权

评论回复
9
霜之哀息|  楼主 | 2018-1-16 21:26 | 只看该作者
ddllxxrr 发表于 2018-1-12 08:04
可以是可以,一般最好别这样传,尽量不用宏,为什么不好好写个函数呢

因为都是一些固定值,比如寄存器地址之类的,所以用宏定义先定义在头文件中方便使用,但是呢,函数的形参就需要定义成unsigned char的,我C语言学的差,都是自己摸索的,也不知道对不对

使用特权

评论回复
10
ddllxxrr| | 2018-1-16 21:29 | 只看该作者
霜之哀息 发表于 2018-1-16 21:26
因为都是一些固定值,比如寄存器地址之类的,所以用宏定义先定义在头文件中方便使用,但是呢,函数的形参 ...

对,就是这样,不用什么宏不宏的,比如,形参是unsigned int,就写为 void xxx(unsigned int)

使用特权

评论回复
11
憨厚诚实大叔| | 2018-1-17 08:49 | 只看该作者
楼主搞清楚什么是宏定义,就知道了。宏定义只是预编译时替换而已

使用特权

评论回复
12
zqx1000| | 2018-4-10 19:31 | 只看该作者
kankan

使用特权

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

本版积分规则

28

主题

110

帖子

1

粉丝