打印

请问在ADS1.2下如何实现自己的debug函数

[复制链接]
3168|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21icsanta|  楼主 | 2010-10-26 23:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 21icsanta 于 2010-10-27 00:18 编辑

就是想如何在ADS1.2下,实现下面这个功能
#ifdef DEBUG
      #define dbgprint(format,args...)  printf(format, ##args)
#else
      #define dbgprint(format,args...)
#endif

上面这种写法用gcc能编译通过,ADS的编译器就不行

相关帖子

沙发
xinzha| | 2010-10-27 00:07 | 只看该作者
gcc会找到相应的库函数,在ads中没有相应的库就会报错,跟具体的编译环境有关。

使用特权

评论回复
板凳
21icsanta|  楼主 | 2010-10-27 00:18 | 只看该作者
那意思就是没办法实现这个功能了?

使用特权

评论回复
地板
xinzha| | 2010-10-27 11:05 | 只看该作者
当然有了,你自己写printf或者包含ads提供的库,使用semihosting功能都可以啊。
建议lz还是先去学习下编译以及系统的基础知识。

使用特权

评论回复
5
21icsanta|  楼主 | 2010-10-27 19:49 | 只看该作者
当然有了,你自己写printf或者包含ads提供的库,使用semihosting功能都可以啊。
建议lz还是先去学习下编译以及系统的基础知识。
xinzha 发表于 2010-10-27 11:05

你是说发生这个错误时因为ads的库里没有包含printf的函数?
那我敢肯定不是这个原因造成的,因为printf函数就是我自己写的
之所以没有编译通过,我猜是由于ads不支持带可变参数的宏

使用特权

评论回复
6
ygrssm| | 2015-10-8 12:04 | 只看该作者
现在用ADS的很少了,我用ADS1.2测试了一下,它也支持可变参数的宏,但是没有找到可变参数与单个参数共用一个宏的办法,只好针对printf的单个参数和多个参数分别写了一个宏,有经验的大神希望能贡献一个合二为一的。下面是我的方法,在ADS1.2环境下亲测可用:
#define DEBUG_ENABLE 1          //是否使能 1:使能 0:禁止
#if DEBUG_ENABLE
#define DBG(info) printf("\r\n%s\r\n",info)
#define DBGFMT(format,...)   printf("\r\n"format"\r\n",##__VA_ARGS__)
#define DBG_WHERE(info) printf("\r\n%s,line:%d,%s\r\n",__FILE__,__LINE__,info)
#define DBGFMT_WHERE(format,...)   printf("\r\n%s,line:%d,"format"\r\n",__FILE__,__LINE__,##__VA_ARGS__)
#else
#define DBG(info)
#define DBGFMT(format,...)
#define DBG_WHERE(info)
#define DBGFMT_WHERE(format,...)
#endif

使用特权

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

本版积分规则

40

主题

74

帖子

0

粉丝