2009-06-16 18 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++(如问题中所述)。

相关问题