2009-12-17 123 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