2012-05-06 28 views
0

我編碼一些OS的代碼抑制警告,編譯器不明白,在我的功能之一,我做的:上只有一個occurence

void kernel_getpid() 
{ 
     register unsigned int r0 asm("r0") = current_pid; 
} 

所以編譯器會抱怨:

Warning: Variable "r0" is not used 

我怎樣才能禁止文件中的這一點的警告? 我通常想要發出這些警告,所以我不想在全球範圍內關閉它們,但是現在它變得煩人,因爲我對此無能爲力。

+1

問:爲什麼不直接在彙編程序中完成分配?這是ARM,不是嗎? – paulsm4

+0

當然這可能會解決這個特殊情況,但我想對這個問題給出更一般的答案,因爲這不是我第一次偶然發現這個問題。 – Nobody

回答

1

從版本4.2開始,但在4.6之前,您可以使用以下內容。 Unforunatelly它會關閉文件中的那一點警告。

#pragma GCC diagnostic ignored "-Wunused-variable" 
void kernel_getpid() 
{ 
    register unsigned int r0 asm("r0") = current_pid; 
} 

對於4.6或更高版本,您可以推送和彈出診斷標誌,以便使用以下內容。

void kernel_getpid() 
{ 
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wunused-variable" 

    register unsigned int r0 asm("r0") = current_pid; 
} 
#pragma GCC diagnostic pop 

您可以在GCC documentation或在約supressing GCC警告here教程閱讀更多細節。