关于条件预编译的问题#ifdef __IAR_SYSTEMS_ICC__

2019-08-06 16:33发布

#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
这两句我没哟找到宏定义啊,在.h文件里也没有,宏定义到哪里了,为什么中断函数头是按#pragma vector=TIMERA0_VECTOR
__interrupt void TIMERA0_rx (void)
这个跑的,谁给解释一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
中国白杨
1楼-- · 2019-08-06 19:45
//为了保证代码可以在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中断函数声明结束。

{ }

dirtwillfly
2楼-- · 2019-08-06 21:42
 精彩回答 2  元偷偷看……
1988020566
3楼-- · 2019-08-07 01:43
没有宏定义就不是不使用的。
1988020566
4楼-- · 2019-08-07 07:21
楼主如果使用可以自己定义。
1988020566
5楼-- · 2019-08-07 11:07
如果出现重复定义的话,再查找看看的。

一周热门 更多>