中断提前返回,用什么指令?(C语言)

[复制链接]
5040|7
 楼主| 促狭鬼 发表于 2007-5-9 14:09 | 显示全部楼层 |阅读模式
用汇编的话,函数返回用ret和reti区别。
但用C写的话,都是大括号或return结束该函数.
怎么提前结束中断函数呢?比如
普通函数:
void fun1(void)
{
    if(A) return;
    fun2();
    fun3();
    ...
}
用AVR单片机为例:
#pragma vector=INT1_vect
__interrupt void EXT_INT1(void)  
{
    if(B)
    {
         funtion_1();
         if(C)
         {
                funtion_2();
                funtion_3();
                if(D)
                {
                     ...
                }
         }
    }    
}
如果能直接写成:
#pragma vector=INT1_vect
__interrupt void EXT_INT1(void)  
{
    if(!B) return;        //假设的,俺没敢用return直接结束该中断函数
    funtion_1();
    if(!C) return;    //假设的
    funtion_2();
    funtion_3();
    if(D)
    {
       ...
    }
}

勉去漏写大括号的错误和简洁视觉上的阅读
大家有没有什么好的心得?我现在是老老实实写括号的

IC1008 发表于 2007-5-9 14:30 | 显示全部楼层

就return吧 哈哈

 楼主| 促狭鬼 发表于 2007-5-9 14:36 | 显示全部楼层

楼上的你确认?

你在真实的产品里这样用过吗?
音乐乐乐 发表于 2007-5-9 15:15 | 显示全部楼层

晕,当然是return了,编译器会改成RETI的

computer00 发表于 2007-5-9 15:38 | 显示全部楼层

哈哈~~~编译器才不会像楼主那么笨呢~~~~~

 楼主| 促狭鬼 发表于 2007-5-9 15:42 | 显示全部楼层

呵呵,真的吗?

那谢谢大家啊!
fushaobing 发表于 2007-5-9 21:18 | 显示全部楼层

楼主多虑了

其实编译器就是按你的想法去执行的。
oyggj 发表于 2007-5-9 21:52 | 显示全部楼层

有道理

呵呵,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

213

帖子

1

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