中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。
__interrupt double compute_area(double radius)
{double area = pi*radius*radius;printf(“\narea = %f”,area);return area;
}
(1) ISR是不能有返回值。
(2) ISR不能传递参数。
(3) 在许多的处理器/编译器中,浮点一般都是不可重入的。ISR一般是短而有效的,在ISR中做浮点运算时不明智的。
(4) printf() 函数有重入和性能上的问题。