2011-03-08 179 views
1

可能重複:
What issues can I expect compiling C code with a C++ compiler?我可以使用C++編譯器來編譯c源代碼嗎?

只是好奇,我是否可以使用C++編譯器來編譯C源代碼?反正是有完全支持C99標準還沒有任何編譯器? ?

+4

兩個問題,兩個答案。有時。是。 – ephemient 2011-03-08 03:41:49

+0

可能的重複:http://stackoverflow.com/questions/861517(對於「任何c99編譯器」部分,是的 - 請參閱http://en.wikipedia.org/wiki/C99) – 2011-03-08 03:45:29

回答

5

C++是不是 C的超集有些地方它們不同,這意味着某些C代碼不會在C++模式下編譯。

至於C99的支持,GCC和Clang是最接近的。微軟不支持C99,只專注於C++(與C99重疊)。

3

除非明確限制編譯器使用C(C++知道該怎麼做),否則編譯C代碼時可能會遇到問題。如果編譯器使用C++編譯C代碼,那麼如果在C代碼中使用C++中保留的單詞,則可能會出現問題。

例如,C這樣的代碼:

int main(void) { int class = 5; return class;} 

將編譯細跟C編譯器(在C模式或C++編譯器),但不會與C++編譯器編譯。

2

我用C++編譯C代碼時可能會想到的兩個問題(可能更多)是鑄造和變量名稱。例如:

char* new = malloc(20); 

以上是有效的C,但在C++編譯你會得到以下錯誤時:

  1. char*不能分配給void*沒有明確的轉換。
  2. new是一個關鍵字。

是,一些編譯器都支持C99。海灣合作委員會可能會,但我只有使用MSVC的經驗,他們不支持它。