2009-06-16 46 views

回答

4

在枚舉結束逗號是有效的C99但不是在C89,所以下面的工作提供你的代碼是有效的C99

gcc -std=c99 -pedantic foo.c 

我相當肯定,它不是有效的C++ (根據克++)在所有

編輯:在HP-UX與GCC 4.2.1測試這一點,它沒有錯誤/警告工作 foo.c的

int main(int argc, char** argv) { 
    enum { A, B, }; 
    return 0; 
} 


gcc -std=c99 -pedantic foo.c 
+1

事實上,當使用「-std = c89」時我會收到警告。當使用「-std = 99」時不會發出警告。但是如果我把foo.c變成foo.cpp,我會得到一個錯誤。這是我的問題...... – Guillaume 2009-06-17 07:35:09

+2

如果它是.c文件,那麼GCC使用C編譯器。如果它是.cc或.cpp文件,GCC使用C++編譯器。你的代碼不是合法的C++,因此是錯誤。 – Glen 2009-06-17 12:22:53

2

在C++中它是儘管它在C++ 11中是合法的,但還不可能將其禁用。 因此,在未來,當GCC得到糾正時,-std = C++ 11應該禁用它。

-std = c99僅適用於C,而不適用於C++(如問題中所述)。

相關問題