4

我正在学习C++,当我测试Microsoft Visual C++ 2008 ExpressEclipse Ganymede时,但默认使用g++编译器,我注意到VC++中的相同代码会出现一些错误,并且g++编译正常,没有错误或警告并正常执行,但我想知道VC++语法和g++语法有什么区别?谢谢!

4

3 回答 3

13

无法发表评论,因为我是新人(声誉还不是 50),但这是另一个涉及类似主题的 Stack Overflow 问题:

Visual C++ 和 *nix 环境中的编译差异

于 2009-07-22T23:41:16.813 回答
4

这是一个非常广泛的话题。两种编译器都大致符合 ISO C++ 的一些例外,但这些例外可能不同(例如,VC++throw以非标准方式处理函数上的说明符,而 g++ 在这方面符合标准)。此外,这两个编译器都提供了相当多的扩展,这些扩展大多相互不兼容(例如 VC++__property__interface,或者 g++typeof和计算的 goto)。一般来说,这里最好的建议是查阅任一产品的文档。如果您有任何遇到问题的特定代码,并且想知道为什么它会编译一个而不是另一个,那么可以更详细地回答。

于 2009-07-22T23:40:51.493 回答
0

请将此添加到 Pavel 的答案中:

如果您正在开发跨平台产品,请使用 g++ ( MingW ) 并坚持 C++ 标准。使用 MingW 提供的符合 POSIX 标准的 API,标准设施不能满足此目的。使用 MingW 构建的可执行文件不需要在目标系统上安装特殊的运行时,但 VC++ 2008 需要它。因此,使用 MingW 应用程序的部署更简单。

VC++ 的一个优点是其出色的 IDE。Microsoft 编译器似乎也执行了一些特定于 Windows 的优化。

尽管如此,MingW 与CodeBlocks IDE 相辅相成,可以为您提供出色的、免费的、跨平台的 C++ 开发环境。

于 2009-07-23T05:02:06.873 回答