keil下,很短的子程序优化

[复制链接]
14350|9
手机看帖
扫描二维码
随时随地手机跟帖
ee168|  楼主 | 2021-9-24 13:43 | 显示全部楼层 |阅读模式
C51的

在外设函数中
void ppp(void)
{
  P00 = 1;
}

主函数中

ppp();

从调试的汇编指令来看,程序确实调用了子函数,有没有什么编译处理,直接处理成P00 = 1
放主函数中?我不想主函数还调用 芯片.h 函数,这样可以模块化
有什么好办法吗?

使用特权

评论回复

相关帖子

hbzjt2011| | 2021-9-24 15:04 | 显示全部楼层
直接用#define宏指令实现可以试试

使用特权

评论回复
ee168|  楼主 | 2021-9-24 17:31 | 显示全部楼层
谢谢回答
想程序模块化,主程序中不想包含 8051.h 函数,只想其其调用 peripher.h的调用来实现,将#define放在peripher.h,主程序编译时一样会提示 P00 没有定义

使用特权

评论回复
coody| | 2021-9-24 18:39 | 显示全部楼层
8051.h是头文件,这么会有函数?

使用特权

评论回复
ErrorGz| | 2021-9-25 00:27 | 显示全部楼层
考虑一下 inline void ppp(void)

使用特权

评论回复
ee168|  楼主 | 2021-9-25 10:22 | 显示全部楼层
我看了一些知名的公司的例程,也是采用函数的方式调用.编译器不能处理一下,这么短小,又没有参量和输出的函数不能直接编译吗.

头文件中可以放置函数声明调用,peripher.h可以放置函数声明,但是放入#define引用P00的话,势必其将引用8051.h,这样主函数也会引入8051.h,不想这样

使用特权

评论回复
zchong| | 2021-9-25 13:44 | 显示全部楼层
内联函数,inline关键字

使用特权

评论回复
ee168|  楼主 | 2021-9-26 08:19 | 显示全部楼层
谢谢楼上的,对inline一直没有注意,重新看了一下其功能,应该是这个

刚对keil C51添加,但是居然报错,一定要将语音弄到C++吗,我再试一试

使用特权

评论回复
ee168|  楼主 | 2021-9-26 11:52 | 显示全部楼层
Keil C51 不支持

使用特权

评论回复
bangbangji| | 2021-10-3 02:07 | 显示全部楼层

使用特权

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

本版积分规则

112

主题

196

帖子

2

粉丝