2009-12-17 119 views
1
  1. 我可以用microsoft c/C++編譯器14.00(與visual studio 2005集成)編譯void main()作爲C++源文件。所以這意味着編譯器不符合主函數上的C++標準原型?微軟C/C++編譯器的C編譯器和C++編譯器有什麼區別?

  2. 是微軟的c/C++編譯器只有一個編譯器,也就是它只有一個C++編譯器?因爲C源文件可以編譯爲C++源文件,所以不需要再開發c編譯器了?

    謝謝。

回答

6

我可以編譯void main()

主要的有效簽名是:

int main(void); // no parameters 
int main(int, char **); // parameterized 

其他的都是不規範。該標準確實允許實現允許main()的替代簽名。

是微軟的c/C++編譯器只有一個編譯器,也就是說,它只有一個C++編譯器?

是的,它是一個可執行文件(cl.exe)。但是,它可以作爲C編譯器或C++編譯器工作。缺省值是C++編譯器模式。您可以通過進入改變這一項目屬性> C/C++>高級(/TP/TC

+4

它還推斷從文件擴展名的默認(.c和的.cpp/.CXX) – 2009-12-17 05:10:17

+0

C++標準明確禁止任何定義'main'不返回'int'。 – 2015-11-10 01:41:33