2010-05-18 91 views
11

Bueno, aquí hay una pregunta bastante estúpida. ¿Visual C++ SOLO es un IDE? ¿O es un lenguaje en sí mismo para win32? ¿Cuál sería exactamente la diferencia entre los dos? Esto lo pregunto porque estaba probando algunos de mis viejos códigos C++ en VC++ 2008 y no compilaría.¿Cuál es la diferencia entre Visual C++ y C++?

+0

¿cuál es la antigüedad del código? – Tom

+0

como 4-5 años de edad. Nada complejo. – Laz

+0

¿Qué * kind * de errores del compilador? Tal vez deberías publicarlos y podemos ayudar a resolverlos. Sin verlo, voy a adivinar que es una configuración/opción compilación/compilador, en lugar de un problema con el código en sí. Plain C++ no debería tener demasiados problemas para compilar y ejecutar en VC++. – FrustratedWithFormsDesigner

Respuesta

14

Visual C++ puede ser muchas cosas, incluyendo:

  1. compilador de C++ de Microsoft (cl.exe, link.exe etc)
  2. El IDE (Visual Studio en el modo C++)
  3. El tiempo de ejecución de C (MSVCRT)
  4. Otras bibliotecas (por lo menos): MFC, ATL

en cuanto a la compilación antiguo código C++: Visual Studio es ahora bastante compatible compilador de C++. Este no fue siempre el caso, como con Visual C++ 6 o anterior. Es probable que su código no cumpla con los estándares o use un comportamiento obsoleto, lo que simplemente no funciona en los compiladores más nuevos.

Desafortunadamente, Visual C++ es un compilador de C pobre, ya que no es compatible con C99 (y nunca lo hará), a menos que las funciones se superpongan entre C++ y C99. El problema más notable para muchas personas es la falta de stdint.h.

+6

Una forma VC todavía se desvía muy visiblemente de C++ estándar es que no lo hace adecuado análisis de dos fases de plantillas. Esto puede ocultar errores divertidos en el código de la plantilla pasando desapercibido, lo que lleva a sorpresas desagradables si alguna vez quiere que el código se compile en un compilador más conforme. (Y esa podría ser una versión futura de VC.) – sbi

+0

Puedo dar fe de esto. He tenido una buena cantidad de errores intentando que la metaprogramación de plantillas funcione en ese compilador que funciona bien en otros compiladores. – wheaties

+1

@wheaties: Es lo opuesto: otros compiladores, notable Comeau y también gcc, son mejores en el análisis de std C++. Sin embargo, el problema con la búsqueda faltante en dos fases es que VC acepta código defectuoso que otros compiladores (con razón) rechazan. Si está haciendo desarrollo multiplataforma y el código está escrito usando VC, esto puede volverse loco. – sbi

0

Supongo que Visual C++ incluye las extensiones de biblioteca de Microsoft.

+0

¿eso es eso? todo el gran negocio y las versiones de Vegas para algunos archivos de cabecera? – Laz

+1

@Ram Bhat: Es el IDE, el compilador y más que unos pocos "pocos" archivos de encabezado, y * think * MS VC++ presenta algunos de sus propios cambios de sintaxis. No es C++ "puro". – FrustratedWithFormsDesigner

+0

La nueva versión de Visual Studio es bastante importante en términos de su esfuerzo, y las características, etc., que proporciona. No es tan importante en términos del lenguaje C++, específicamente, excepto en la medida en que continúen perfeccionando el cumplimiento de los estándares y comenzando a respaldar el próximo estándar C++ 0x. – jwismar

3

Visual C++ es un IDE. Compila el código estándar de C++. Sin embargo, cada compilador de C++ esencialmente crea su propia versión de C++. Pocos compiladores son totalmente compatibles con el estándar actual, y pueden o no agregar características del próximo estándar. Además, a veces agregan sus propias extensiones al idioma. Por lo tanto, siempre existe un riesgo de portabilidad al compilar código C++ con compiladores diferentes. Sin embargo, las versiones recientes de Visual C++ están bastante cerca de cumplir con los estándares, y la mayoría de las cosas que compilan se compilará con otros compiladores populares como gcc/g ++ (y viceversa).

1

Visual C++ es el nombre del IDE y compilador de Microsoft para el lenguaje de programación C++. Sin embargo, tenga en cuenta que, al igual que muchas implementaciones de C++, Visual C++ tiene ciertas extensiones que C++ no proporciona, así como ciertas áreas en las que no se ajusta completamente al estándar de lenguaje ISO C++.

1

VS C++ es esencialmente un tipo específico de C++.

Las nuevas versiones de VS incluyen nuevas funcionalidades, tanto extensiones (como CLI), como también nuevas normas, como C++ 0x (inferencia de tipo, etc.).

Algunas de estas funciones pueden hacer que el código deje de funcionar accidentalmente, o puede confiar en errores específicos de Visual Studio que fueron corregidos.

2

VS2008 incluye tanto C++ estándar como C++ administrado de Microsoft. El C++ estándar es en su mayoría compatible con C++ 03 (al menos esa fue la intención). Managed (es decir, no estándar) C++ es para desarrollar aplicaciones .NET y no está (ni estaba destinado a ser) compatible con ningún estándar C++.

Es posible que desee asegurarse de que no seleccionó accidentalmente Managed C++ cuando transfirió su aplicación.

1

Visual C++ contiene un compilador de C++ que es una implementación de C++ Language Standard. Visual C++ 6 es una implementación no conforme. Visual C++ 2008 es mucho mejor. Hay algunos cambios de VC++ 6 a VC++ 2008 y es por eso que su código anterior no pudo compilarse.Hay algunos indicadores que permiten compilar el código de VC++ 6 en VC++ 2008.

Here is una buena pregunta ya en lo que podría ser útil.

Cuestiones relacionadas