ICCAVR 中关于_LINE_的使用问题 树贴求教

[复制链接]
 楼主| 复仇之矛 发表于 2016-7-26 15:17 | 显示全部楼层 |阅读模式
我最近在学一个调度器,使用到_LINE_这个东西,网上查找到这个是C语言内置宏定义,切我在KEIL中编译没有问题,但是在ICCAVR中使用ATMEGA16实现这个调度器是出现如下问题:
!E C:\iccv7avr\examples.avr\protothread\led.c(17): undeclared identifier `_LINE_'
!E C:\iccv7avr\examples.avr\protothread\led.c(17): case label must be a constant integer expression
!W C:\iccv7avr\examples.avr\protothread\led.c(18):[warning] reference to `volatile unsigned char' elided
!W C:\iccv7avr\examples.avr\protothread\led.c(18):[warning] expression with no effect elided
!W C:\iccv7avr\examples.avr\protothread\led.c(24):[warning] missing return value
  1. #define BEGIN       static unsigned char _lc=0; switch(_lc){case 0:
  2. #define END         ;}; _lc=0;
  3. #define WaitX(tim)  _lc=_LINE_+((_LINE_%256)==0);return tim;case _LINE_+((_LINE_%256)==0):


airwill 发表于 2016-7-27 09:23 | 显示全部楼层
undeclared identifier `_LINE_'

说明这个编译器并不支持这个宏, 或者写法有问题, 比如可能是这样定义的 '__LINE__'(两个下划线)
iccavr 是个功能比较弱的编译器, 不支持这个也很有可能
 楼主| 复仇之矛 发表于 2016-7-27 10:07 | 显示全部楼层
airwill 发表于 2016-7-27 09:23
undeclared identifier `_LINE_'

说明这个编译器并不支持这个宏, 或者写法有问题, 比如可能是这样定义的 ' ...

如果不能这样定义,那就不能很好的利用编译过的行号进行调度。版主有没有比较好用的AVR编译器推荐呢?
airwill 发表于 2016-7-27 10:44 | 显示全部楼层
GCCAVR, 我一直用这个编译器, 功能很强劲, 编译效率也很高.
不过跟 ICCAVR 的差别也蛮大, 初学者上手不那么容易
 楼主| 复仇之矛 发表于 2016-7-27 11:57 | 显示全部楼层
airwill 发表于 2016-7-27 10:44
GCCAVR, 我一直用这个编译器, 功能很强劲, 编译效率也很高.
不过跟 ICCAVR 的差别也蛮大, 初学者上手不那么 ...

哦哦,以前用KEIL的,用这个ICCAVR也不是太习惯。新手,学那个都行。谢谢版主哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

185

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部