那么这是一个相当愚蠢的问题。 Visual C++只是一个IDE?或者它是一个独立于win32的语言?这两者之间的区别究竟是什么?我问这是因为我在VC++ 2008上尝试了一些旧的C++代码,并且无法编译。Visual C++和C++有什么区别?
回答
的Visual C++可很多事情,包括:
- 微软的C++编译器(cl.exe,LINK.EXE等)
- 的IDE(Visual Studio中的C++模式)
- C运行时(MSVCRT)
- 其他库(少左右):MFC,ATL
至于编译旧的C++代码:现在Visual Studio是一个相当标准的C++编译器。这并非总是如此,例如使用Visual C++ 6或更早的版本。很可能您的代码不符合标准或使用不推荐使用的行为,而这些行为在新编译器中无法使用。
不幸的是Visual C++是一个糟糕的C编译器,因为它不支持C99(并且永远不会),除非C++和C99之间的特性重叠。对很多人来说最显着的问题是缺少stdint.h。
一种VC仍然非常明显地偏离标准C++的方式是,它不会执行正确的两阶段解析的模板。这可以隐藏模板代码中令人不快的错误,如果您希望代码在更合适的编译器上编译,这会导致令人讨厌的意外。 (这可能是VC的未来版本。) – sbi 2010-05-18 20:00:22
我可以证明这一点。我有一些错误试图让模板元编程在该编译器中工作,在其他编译器中工作正常。 – wheaties 2010-05-18 20:09:54
@wheaties:正好相反:其他编译器,特别是Comeau和gcc,在解析std C++方面更好。然而,缺少两阶段查找的问题是,VC接受错误的代码,这被其他编译器拒绝(正确)。如果您正在进行跨平台开发并且代码是使用VC编写的,那么这可能会让您感到头疼。 – sbi 2010-05-20 08:18:49
我想Visual C++包括微软的库扩展。
多数民众赞成在??所有的大交易和维加斯为几个头文件发布? – Laz 2010-05-18 19:54:03
@Ram Bhat:这是IDE,编译器,不仅仅是一些“少数”头文件,我认为* MS VC++引入了一些自己的语法变化。这不是“纯粹的”C++。 – FrustratedWithFormsDesigner 2010-05-18 19:54:56
Visual Studio的新版本在他们的努力以及它提供的功能等方面是相当重要的。就C++语言而言,这并不是什么大不了的事情,具体而言,除非他们继续完善其标准合规性并开始支持即将推出的C++ 0x标准。 – jwismar 2010-05-18 19:57:07
Visual C++是一个IDE。它编译标准的C++代码。但是,每个C++编译器本质上都会创建它自己的C++版本。很少编译器完全符合当前的标准,他们可能会也可能不会添加即将到来的标准中的功能。另外,他们有时会添加他们自己的语言扩展。因此,在编译C++代码时使用不同的编译器时总会存在可移植性风险。但是,最近版本的Visual C++与标准兼容,并且大多数与它一起编译的东西都将与其他流行的编译器(如gcc/g ++)(和反之亦然)一起编译。
Visual C++是Microsoft的IDE和C++编程语言编译器的名称。但是请注意,与许多C++实现一样,Visual C++具有某些C++不提供的扩展,以及某些未完全符合ISO C++语言标准的扩展。
VS C++本质上是一种特定类型的C++。
新的VS版本包括更新的功能,两个扩展(例如CLI),以及更新的标准,例如C++ 0x(类型推断等)。
某些功能可能会意外导致您的代码停止工作,或者您可能依赖于同时修复的特定Visual Studio错误。
VS2008包含标准C++和Microsoft的托管C++。标准的C++大多符合C++ 03(至少这是意图)。被管理的(即非标准的)C++是用于开发.NET应用程序的,并且不是(也不打算)符合任何C++标准。
您可能希望确保在移植应用程序时,您并未意外选择托管C++。
Visual C++包含C++编译器,它是C++语言标准的一个实现。 Visual C++ 6是不符合规定的实现。 Visual C++ 2008更好。从VC++ 6到VC++ 2008有一些变化,这就是为什么你的旧代码无法编译。有一些标志允许在VC++ 2008中编译VC++ 6代码。
Here is在SO上已经有一个很好的问题,可能会有所帮助。
- 1. c#和visual c#有什么区别?
- 2. C#.net和Visual Basic.net有什么区别?
- 3. Visual C++ 6.0和Visual C++ 2008有什么区别?
- 4. 什么区别\\。\ C:和\\。\ C:\
- 5. char [] c和char c []有什么区别?
- 6. Managed C++和C++/CLI有什么区别?
- 7. \ c和\\ c有什么区别?
- 8. printf中%c和%C有什么区别?
- 9. 托管C++和C#有什么区别?
- 10. C++和C++ CLI有什么区别
- 11. visual studio和visual C++ IDE有什么区别
- 12. Visual Studio C++ - 'CLR'和'General'类别有什么区别?
- 13. 有什么区别C#
- 14. SqlCeConnection和SqlConnection C#有什么区别?
- 15. Objective-C和Cocoa有什么区别?
- 16. C++中fprintf和vfprintf有什么区别?
- 17. C++中0x和'\ x'有什么区别?
- 18. C#中CLR和DLR有什么区别?
- 19. Lua C API:lua_gettop()和-1有什么区别?
- 20. jni compile cpp和c有什么区别?
- 21. 'b'和'c'有什么区别?
- 22. Ctrl-C和SIGINT有什么区别?
- 23. C和%之间有什么区别?
- 24. Ctrl + C和Ctrl + [有什么区别?
- 25. C#和.NET有什么区别?
- 26. C++中#import和#include有什么区别?
- 27. GLSL和c有什么区别?
- 28. C中#define和'='有什么区别?
- 29. C#Thread.Sleep()和threadreference.Join()有什么区别?
- 30. Xcode,Objective-C和Cocoa有什么区别?
代码的年龄? – Tom 2010-05-18 19:52:26
喜欢4-5岁。没有复杂的。 – Laz 2010-05-18 19:54:36
什么样的编译器错误?也许你应该发布它们,我们可以帮助解决它们。没有看到它,我会猜测它是一个构建/编译器设置/选项,而不是代码本身的问题。普通的C++不应该在VC++中编译和运行时遇到太多麻烦。 – FrustratedWithFormsDesigner 2010-05-18 19:56:36