[应用相关] 宏定义问题

[复制链接]
784|16
 楼主| stly 发表于 2020-4-4 18:35 | 显示全部楼层 |阅读模式

#ifdef __IAR_SYSTEMS_ICC__
#if __VER__ >= 200
#pragma vector=TIMERA0_VECTOR
__interrupt void TIMERA0_rx (void)
#else
interrupt[TIMERA0_VECTOR] void TIMERA0_rx (void)
#endif
#else
interrupt[TIMERA0_VECTOR] void TIMERA0_rx (void)
#endif
看这段程序#ifdef __IAR_SYSTEMS_ICC__
#if __VER__ >= 200
这两句我没找到宏定义
llljh 发表于 2020-4-4 18:38 | 显示全部楼层
.h文件?会不会在这里呢???
hanwe 发表于 2020-4-4 18:40 | 显示全部楼层

楼主代码不全 没法说
wangpe 发表于 2020-4-4 18:43 | 显示全部楼层
这个是编译器来定义的
 楼主| stly 发表于 2020-4-4 18:48 | 显示全部楼层
在.h文件里也没有,宏定义到哪里了
 楼主| stly 发表于 2020-4-4 18:52 | 显示全部楼层

/为了保证代码可以在IAR编译器的任何版本中都能正确得到编译,所以作以下的条件编译。

#ifdef __IAR_SYSTEMS_ICC__              //如果编译器是IAR, 那么以下将被编译。

#if __VER__ >= 200

#pragma vector=USART0RX_VECTOR          //在IAR2.0以上中断函数声明。

__interrupt void SPI0_rx (void)

#else                                   //在IAR2.0以下中断函数声明。

interrupt[USART0RX_VECTOR] void SPI0_rx (void)

#endif                                  //IAR中断函数声明结束。

{ }
pengf 发表于 2020-4-4 18:54 | 显示全部楼层

为什么中断函数头是按#pragma vector=TIMERA0_VECTOR
__interrupt void TIMERA0_rx (void)
pangb 发表于 2020-4-4 18:57 | 显示全部楼层
没有宏定义就不是不使用的吧。
pangb 发表于 2020-4-4 19:00 | 显示全部楼层
如果出现重复定义的话,再查找看看的。
renyaq 发表于 2020-4-4 19:03 | 显示全部楼层
没找到宏定义,编译时候也会报错的吧
zyf部长 发表于 2020-4-4 19:07 | 显示全部楼层
全局搜索试试。楼主用的什么编译器呢?
zwll 发表于 2020-4-4 19:12 | 显示全部楼层
如果使用CCS的话,是需要自己添加宏定义的。。
chuxh 发表于 2020-4-4 19:14 | 显示全部楼层
不妨使用右键查找一下吧。
juventus9554 发表于 2020-4-4 19:17 | 显示全部楼层
这个,是编译器自己给出的宏定义,本来就不应当在源程序中出现的。
llia 发表于 2020-4-4 19:19 | 显示全部楼层
肯定有 要不然会报错的
huwr 发表于 2020-4-4 19:22 | 显示全部楼层
不能自己定义一下吗
 楼主| stly 发表于 2020-4-4 19:26 | 显示全部楼层

嗯,预料中的结果,多谢大家啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

433

主题

7058

帖子

0

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