可能重複:
What issues can I expect compiling C code with a C++ compiler?我可以使用C++編譯器來編譯c源代碼嗎?
只是好奇,我是否可以使用C++編譯器來編譯C源代碼?反正是有完全支持C99標準還沒有任何編譯器? ?
可能重複:
What issues can I expect compiling C code with a C++ compiler?我可以使用C++編譯器來編譯c源代碼嗎?
只是好奇,我是否可以使用C++編譯器來編譯C源代碼?反正是有完全支持C99標準還沒有任何編譯器? ?
C++是不是 C的超集有些地方它們不同,這意味着某些C代碼不會在C++模式下編譯。
至於C99的支持,GCC和Clang是最接近的。微軟不支持C99,只專注於C++(與C99重疊)。
除非明確限制編譯器使用C(C++知道該怎麼做),否則編譯C代碼時可能會遇到問題。如果編譯器使用C++編譯C代碼,那麼如果在C代碼中使用C++中保留的單詞,則可能會出現問題。
例如,C這樣的代碼:
int main(void) { int class = 5; return class;}
將編譯細跟C編譯器(在C模式或C++編譯器),但不會與C++編譯器編譯。
我用C++編譯C代碼時可能會想到的兩個問題(可能更多)是鑄造和變量名稱。例如:
char* new = malloc(20);
以上是有效的C,但在C++編譯你會得到以下錯誤時:
char*
不能分配給void*
沒有明確的轉換。new
是一個關鍵字。是,一些編譯器都支持C99。海灣合作委員會可能會,但我只有使用MSVC的經驗,他們不支持它。
兩個問題,兩個答案。有時。是。 – ephemient 2011-03-08 03:41:49
可能的重複:http://stackoverflow.com/questions/861517(對於「任何c99編譯器」部分,是的 - 請參閱http://en.wikipedia.org/wiki/C99) – 2011-03-08 03:45:29