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

[复制链接]
648|11
 楼主 | 2018-1-9 16:05 | 显示全部楼层 |阅读模式
比如我需要传递一个固定值给函数,值的类型是unsigned char,我的函数定义的形参类型也是unsigned char。现在我需要封装在头文件上引用,我想把这个固定值用宏定义放置,这个宏定义的值直接放进函数是不是会出问题呢?
| 2018-1-9 16:33 | 显示全部楼层
void Test(u8 par)
{
        ...
}

#define MACRO_Test()        Test(100)
| 2018-1-9 16:47 | 显示全部楼层
把头文件包含进去就不会有问题
| 2018-1-10 10:17 | 显示全部楼层
好困
| 2018-1-10 15:38 | 显示全部楼层
可以传的
比如
#define ABC  100
u8 abc_test(u8 abc)
{
.........
}

abc_test(ABC);

您是这样子传还是向1楼那样子?
都可以的
| 2018-1-11 21:03 | 显示全部楼层
宏替换只是字符串简单替换,这是基本原则。
 楼主 | 2018-1-11 21:43 | 显示全部楼层
懂了,后面自己做了实验,抱歉没及时回复啊,今天早上考试,前两天复习去了
| 2018-1-12 08:04 | 显示全部楼层
可以是可以,一般最好别这样传,尽量不用宏,为什么不好好写个函数呢
 楼主 | 2018-1-16 21:26 | 显示全部楼层
ddllxxrr 发表于 2018-1-12 08:04
可以是可以,一般最好别这样传,尽量不用宏,为什么不好好写个函数呢

因为都是一些固定值,比如寄存器地址之类的,所以用宏定义先定义在头文件中方便使用,但是呢,函数的形参就需要定义成unsigned char的,我C语言学的差,都是自己摸索的,也不知道对不对
| 2018-1-16 21:29 | 显示全部楼层
霜之哀息 发表于 2018-1-16 21:26
因为都是一些固定值,比如寄存器地址之类的,所以用宏定义先定义在头文件中方便使用,但是呢,函数的形参 ...

对,就是这样,不用什么宏不宏的,比如,形参是unsigned int,就写为 void xxx(unsigned int)
| 2018-1-17 08:49 | 显示全部楼层
楼主搞清楚什么是宏定义,就知道了。宏定义只是预编译时替换而已
| 2018-4-10 19:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /1 下一条

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