2011-08-28 290 views
-3

以下代碼使用__interrupt作爲中斷服務程序。如何在下面的代碼上發表評論 。c語言的中斷

#include<stdio.h> 
#define PI 3.14 
__interrupt double compute_area(double radius) 
{ 
    double area=PI*radius*radius; 
    printf("\narea=%f",area); 
    return area; 
} 

這是我得到解決的一段代碼。我沒有嘗試過一箇中斷程序,但 已經讀取,中斷不是一個函數調用和中斷標誌用於設置 的中斷服務例程。這是我對中斷的理解。請幫我看看 瞭解有關中斷的代碼。

+2

這是什麼*問題* –

+1

爲什麼你會像這樣運行一個函數作爲中斷...? – bdonlan

+0

@oli:問題是評論這段代碼。 – Angus

回答

2

我不確定你到底在問什麼。您使用的__interrupt說明符不是C語言的一部分,而是該語言的擴展。您需要告訴我們您正在編譯的系統,以便爲您的用例獲得更具體的答案。

該代碼似乎不是有效的中斷函數。通常,該函數的參數將爲void或發生中斷時的寄存器狀態。您通常也可以通過參數更改寄存器的值(並非總是安全的!)。從中斷處理程序返回值並沒有多大意義,因爲它不會被用戶代碼直接調用。

中斷可能以多種方式處理,但一個簡單的機制是將函數聲明爲中斷處理程序,指向該函數的指針將存儲在某處,並且在特定CPU上發生中斷時,寄存器函數將會被異步調用(因爲中斷可能不會發生在你當前的線程中)。

我不知道任何這種綜合信息會幫助你。我無法真正瞭解你在這裏問的問題。也許如果你把事情縮小一點,我們可以提供更多的幫助。

+0

S:謝謝Eds。我來了解如何通過你的帖子中的函數指針來處理中斷。我得到的問題是我發佈的問題。我無法得到他們想要對上述代碼發表評論。但是,我很開心,我已經知道你的帖子中斷。這是非常清楚的。我會看一些文章,以瞭解更多關於它。謝謝。 – Angus