我正在学习C++,当我测试Microsoft Visual C++ 2008 Express和Eclipse Ganymede时,但默认使用g++编译器,我注意到VC++中的相同代码会出现一些错误,并且g++编译正常,没有错误或警告并正常执行,但我想知道VC++语法和g++语法有什么区别?谢谢!
3 回答
无法发表评论,因为我是新人(声誉还不是 50),但这是另一个涉及类似主题的 Stack Overflow 问题:
这是一个非常广泛的话题。两种编译器都大致符合 ISO C++ 的一些例外,但这些例外可能不同(例如,VC++throw
以非标准方式处理函数上的说明符,而 g++ 在这方面符合标准)。此外,这两个编译器都提供了相当多的扩展,这些扩展大多相互不兼容(例如 VC++__property
和__interface
,或者 g++typeof
和计算的 goto)。一般来说,这里最好的建议是查阅任一产品的文档。如果您有任何遇到问题的特定代码,并且想知道为什么它会编译一个而不是另一个,那么可以更详细地回答。
请将此添加到 Pavel 的答案中:
如果您正在开发跨平台产品,请使用 g++ ( MingW ) 并坚持 C++ 标准。使用 MingW 提供的符合 POSIX 标准的 API,标准设施不能满足此目的。使用 MingW 构建的可执行文件不需要在目标系统上安装特殊的运行时,但 VC++ 2008 需要它。因此,使用 MingW 应用程序的部署更简单。
VC++ 的一个优点是其出色的 IDE。Microsoft 编译器似乎也执行了一些特定于 Windows 的优化。
尽管如此,MingW 与CodeBlocks IDE 相辅相成,可以为您提供出色的、免费的、跨平台的 C++ 开发环境。