Empecé 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é pasa con este programa tan simple? ¿Cómo puedo corregir estos errores?
Respuestas:
No hay problema con este programa. (Excepto probablemente algunos problemas de estilo,
using namespace std
no se recomienda). El problema está en Turbo C ++. Es un software muy antiguo. Implementa un dialecto de C ++, el llamado pre-ANSI C ++ , que ha caído completamente en desuso a principios de este milenio. El primer estándar ANSI para C ++ se publicó en 1998, luego estuvo 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 lenguaje.Para Turbo C ++ tienes que modificar el programa así:
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 usando Turbo C ++, le recomiendo encarecidamente que lo evite si es humanamente posible debido a los siguientes problemas:
Hay muchos compiladores e IDE modernos y gratuitos (como en cerveza , así como en voz ) que puede usar en lugar de Turbo C ++. Algunos de estos incluyen:
Lamentablemente, algunas escuelas / profesores parecen obligar a los estudiantes a usar Turbo C ++ incluso en esta época. Desafortunadamente, 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.
fuente
using namespace std
. Puede que sea una buena decisión pedagógica o no enseñarlo a nuevos programadores, pero no es moralmente incorrecto en sí mismo.using namespace std
es una mala práctica, pero creo que pertenece a esta pregunta, porque los programas hello world de C ++ que encuentras en línea casi siempre lo hacen. Así que es importante tener claro que eso no es lo que hace infeliz a Turbo C ++. Quizás en lugar de "No hay problema con este programa", diga "Este programa es válido, de acuerdo con el estándar actual de C ++; debería compilarse"."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 puros de MS DOS en el IDE de fondo azul clásico. Estos fueron lanzados aproximadamente en algún lugar entre 1989 y 1992, mucho antes de que C ++ se estandarizara, lo que sucedió en el año 1998. Y entonces usaron un dialecto pre-estándar de C ++.
En particular, usaron la
#include <iostream.h>
sintaxis en 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 aún no formaba parte del estándar, 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 tenían problemas con la completa conformidad con C ++ 98, aunque estas versiones de Windows estaban bastante cerca de eso.
A finales de los 90, dejaron caer el nombre "Turbo C ++" en 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 info aquí.
No hace falta decir que, como estudiante, no debe usar nada más que compiladores modernos. Usar compiladores de MS DOS de 1991 al aprender C ++ en el año 2018 es simplemente una locura. No solo es contraproducente, es directamente dañino y te convertirá en un mal programador de C ++. Si su escuela le obliga a usar Turbo C ++ 3.1 o más, entonces su escuela es mala y sus profesores son muy incompetentes. Por favor, vincule esta publicación a ellos y a su director.
fuente
std::string
lugar dechar *
en los exámenes, porque no saben que C ++ está estandarizado ychar *
es obsoleto." .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 ++ debe realizar algunos cambios:
1. Cambie el nombre del archivo de encabezado de
iostream
aiostream.h
2. Y elimine la línea "using namespace std" No es requerido en Turbo C ++. Aquí está el código modificado:
fuente