1. 程式人生 > >error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]

error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]

這個錯誤多為編寫linux驅動程式時出現的錯誤,正常情況下是以警告出現的,

一般有兩種情況:

1. 在函式體內,定義變數程式碼前邊出現非定義的變數(此變數在其他地方已經定義了),編譯時就會出現這個錯誤或警告

2. 在定義變數程式碼前邊出現printk函式,編譯時也會同樣出現這個警告或錯誤

主要就是:在編寫linux驅動的時候在一個函式的前邊首先把這個函式中所需的所有變數一併定義完,就不會出現此錯誤

程式碼例子:

錯誤1:

int a = 1;

void func (void) {

       a = 2;

       int b = 1;

       int c = 1;

       ... ...

}

錯誤2:

void func (void) {

        printk ("。。。 。。。 \n");

        int a = 0;

        int b = 0;

        。。。 。。。

}

正確:

void func (void) {

         // 程式開頭將這個函式所需的變數一併定義完

        int a = 0;

        int b = 0;

        int c = 0;

        ... ....       // 其他變數的定義

         // 執行函式功能程式碼

        ... ....

}

注意:核心的這種程式碼編寫規則與常見的其他c語言編寫方式不太一樣,正常的c語言的變數只要定義在使用它的前邊即可,不要求位置一定在開頭。