programs - if multiple c++
¿Por qué un simple programa estilo "Hola mundo" no se compila con Turbo C++? (3)
He comenzado a aprender C ++ para mi clase de programación. He descargado este programa "Hello World":
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
pero Turbo C ++ se queja:
Error D:/HELLO.CPP 1: Unable to open include file ''IOSTREAM''
Error D:/HELLO.CPP 2: Declaration syntax error
Error D:/HELLO.CPP 6: Undefined symbol ''cout''
¿Qué tiene de malo este programa tan simple? ¿Cómo puedo corregir estos errores?
"Turbo C ++" puede significar numerosos compiladores. Al hacer esta pregunta, es importante incluir el número de versión.
-
Borland Turbo C ++ hasta la versión 3.1 eran compiladores MS DOS puros en el clásico IDE de fondo azul. Estos se lanzaron aproximadamente en algún lugar entre 1989 y 1992, mucho antes de que C ++ se estandarizara, lo que sucedió en el año 1998. Por lo tanto, utilizaron un dialecto pre-estándar de C ++.
En particular, usaron la sintaxis
#include <iostream.h>
lugar del estándar#include <iostream>
, pero tampoco cubrieron muchas características de C ++ como espacios de nombres, plantillas, etc. La biblioteca de plantillas STL no era parte de el estándar todavía, por lo que todo lo relacionado con esa biblioteca era bastante diferente de lo que luego se convirtió en estándar. -
Más tarde en los años 90, Borland lanzó varios compiladores de DOS / Windows con una mejor conformidad. Hasta la versión 5, en algún lugar, todavía luchaban con la total conformidad con C ++ 98, aunque estas versiones de Windows estaban bastante cerca.
-
A finales de los 90, dejaron de usar el nombre "Turbo C ++" a favor de Borland C ++ Builder, que no era solo un IDE sino una herramienta RAD completa basada en Delphi. Estos compiladores eran totalmente compatibles con C ++ 98 y posteriores C ++ 03.
-
Alrededor de 2005, Borland eliminó los compiladores como parte de su línea de productos. Los compiladores se convirtieron en "Codegear", que luego se convirtió en Embarcadero. En algún momento, lanzaron una versión gratuita de Borland Builder que llamaron "Turbo C ++". Esta versión se ajustaba completamente a C ++ 03.
-
Hoy en día estos compiladores se llaman Embarcadero C ++ Builder. Creo que actualmente admiten hasta C ++ 11 con algunos C ++ 14. Más información aquí.
No es necesario decir que, como estudiante, no debes usar nada más que compiladores modernos. Usar compiladores de MS DOS de 1991 cuando se aprende C ++ en el año 2018 es simplemente una locura. No solo es contraproducente, es directamente perjudicial y te convertirá en un mal programador de C ++. Si tu escuela te obliga a usar Turbo C ++ 3.1 o anterior, entonces tu escuela es mala y tus maestros son muy incompetentes. Enlace esta publicación a ellos y a su director.
No hay problema con este programa.
(Excepto probablemente algunos problemas estilísticos, no se recomienda el
using namespace std
).
El problema es con Turbo C ++.
Es una pieza de software muy antigua.
Implementa un dialecto de C ++, llamado
C ++ pre-ANSI
, que ha caído completamente de uso a principios de este milenio.
El primer estándar ANSI para C ++ se publicó en 1998, luego estaba la versión 2003, la versión 2011, la versión 2014, la versión 2017, y ahora esperamos que la versión 2020 se publique oficialmente.
Cada una de estas revisiones estándar trajo cambios más o menos significativos al idioma.
Para Turbo C ++ tienes que modificar el programa así:
#include <iostream.h> // note the .h suffix
// using namespace std; // Turbo C++ doesn''t implement namespaces
int main()
{
cout << "Hello, World!";
return 0;
}
Si observa este programa, la diferencia entre el dialecto C ++ moderno y el aceptado por Turbo C ++ puede parecer pequeña. Sin embargo, crecerá mucho más a medida que sus programas se vuelvan más complejos.
Si bien puede aprender a programar con Turbo C ++, le recomiendo evitarlo si es humanamente posible debido a los siguientes problemas:
- Aprenderá un idioma que es algo similar al lenguaje popular utilizado en la industria, pero que es muy diferente, sin ninguna razón. Si planea usar C ++ para el desarrollo de software real, tendrá que volver a aprender mucho. Es mucho más fácil aprender C ++ moderno de inmediato.
- No hay literatura existente sobre Turbo C ++. Casi el 100% del material de C ++ que encontrará en Internet o en los libros no es directamente aplicable a Turbo C ++ listo para usar. Algunos necesitarán solo una adaptación menor, mientras que otro material es completamente inutilizable. La única fuente de ayuda disponible de inmediato es la ayuda incorporada de Turbo C ++.
- Pocas personas recuerdan Turbo C ++. Cuando haga preguntas en foros, siempre especifique que está utilizando un dialecto anterior a ANSI para filtrar las respuestas orientadas a la versión moderna del idioma. Probablemente recibirá un montón de comentarios sugiriéndole que pare inmediatamente y cambie a un compilador moderno con cada pregunta que haga.
Hay muchos compiladores e IDE gratuitos modernos (como en beer , así como en speech ) que puede usar en lugar de Turbo C ++. Algunos de estos incluyen:
- Visual C ++ Community Edition es un IDE y un compilador de Microsoft
- Code::Blocks es un IDE ligero. En Windows se entrega con un compilador algo desactualizado, pero usted mismo puede instalar un compilador más moderno
- Eclipse CDT es un potente IDE multiplataforma. No se envía con su propio compilador, por lo que debe instalar un compilador separado. En Windows, use, por ejemplo, MinGW .
- Mucho mas
- Además, hay muchos compiladores en línea como http://ideone.com , https://www.onlinegdb.com/ y http://coliru.stacked-crooked.com/ , y muchos más (estos son en su mayoría buenos para probar ideas y escribir programas muy pequeños).
- Tanto Clang/LLVM como GCC son compiladores de speech admiten versiones recientes de C ++.
Lamentablemente, algunas escuelas / maestros parecen obligar a los estudiantes a usar Turbo C ++ incluso en la actualidad. Lamentablemente, esto no es algo que esta comunidad pueda solucionar. Si se encuentra en esta situación, prepárese para no poder obtener mucha ayuda externa.
Turbo C ++ es un compilador muy antiguo y es un poco diferente del compilador GNU C ++.
El código que compartió funcionará perfectamente con el compilador GNU, pero para ejecutarlo con Turbo C ++ necesita hacer algunos cambios:
1. Cambie el nombre del archivo de encabezado de
iostream
a
iostream.h
2. Y elimine la línea "usando el espacio de nombres estándar" No es necesario en Turbo C ++.
Aquí está el código modificado:
#include <iostream.h>
int main()
{
cout << "Hello, World!";
return 0;
}