¿Por qué un programa simple estilo "Hello World" no se compila con Turbo C++?

Resuelto n. m. could be an AI asked hace 7 años • 3 respuestas

Empecé a aprender C++ para mi clase de programación. He descargado este programa "Hola Mundo":

#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?

n. m. could be an AI avatar Jul 01 '17 23:07 n. m. could be an AI
Aceptado

No hay ningún problema con este programa. (Excepto probablemente algunas cuestiones de estilo: using namespace stdno se recomienda). El problema está en Turbo C++. Es un software muy antiguo. Implementa un dialecto de C++, llamado C++ pre-ANSI , 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 se publique oficialmente la versión 2020. 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í:

#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 puedes aprender a programar usando Turbo C++, recomiendo encarecidamente evitarlo si es humanamente posible debido a los siguientes problemas:

  1. Aprenderá un lenguaje que es algo similar a un lenguaje popular utilizado en la industria, pero que, sin embargo, es muy diferente, sin ninguna buena razón. Si planea escribir C++ para el desarrollo de software real, tendrá que volver a aprender mucho. Es mucho más fácil aprender C++ moderno de inmediato.
  2. No existe literatura 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++ de fábrica. Algunos sólo necesitarán una adaptación menor, mientras que otros materiales son completamente inutilizables. Prácticamente la única fuente de ayuda disponible de inmediato es la ayuda integrada de Turbo C++.
  3. Pocas personas recuerdan Turbo C++. Al hacer preguntas en foros, especifique siempre 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 se detenga inmediatamente y cambie a un compilador moderno con cada pregunta que haga.

Hay muchos compiladores e IDE modernos y gratuitos (como en cerveza , así como en voz ) que puedes usar en lugar de Turbo C++. Algunos de estos incluyen:

  1. Visual C++ Community Edition es un IDE y un compilador de Microsoft
  2. Code::Blocks es un IDE ligero. En Windows viene con un compilador algo obsoleto, pero usted mismo puede instalar un compilador más moderno.
  3. Eclipse CDT es un potente IDE multiplataforma. No viene con su propio compilador, por lo que es necesario instalar un compilador independiente. En Windows, utilice, por ejemplo, MinGW .
  4. Mucho mas
  5. 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 (en su mayoría son buenos). para probar ideas y escribir programas muy pequeños).
  6. Tanto Clang/LLVM como GCC son compiladores de software gratuitos que admiten versiones recientes de C++.

Lamentablemente, algunas escuelas y profesores parecen obligar a los estudiantes a utilizar Turbo C++ incluso hoy en día. 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.

n. m. could be an AI avatar Jul 01 '2017 16:07 n. m. could be an AI

"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 clásico IDE de fondo azul. Estos se lanzaron aproximadamente entre 1989 y 1992, mucho antes de que C++ se estandarizara, lo que ocurrió en el año 1998. Y entonces usaron un dialecto preestándar de C++.

    Lo más notable es que usaron la #include <iostream.h>sintaxis en lugar de la 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 mejor conformidad. Hasta la versión 5, en algún lugar todavía tenían problemas con la conformidad total con C++98, aunque estas versiones de Windows estaban bastante cerca de eso.

  • A finales de los 90, abandonaron el nombre "Turbo C++" en favor de Borland C++ Builder, que no era sólo un IDE sino una herramienta RAD completa basada en Delphi. Estos compiladores eran totalmente compatibles con C++98 y C++03 posterior.

  • 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 a la que llamaron "Turbo C++". Esta versión se ajustaba totalmente a C++03.

  • Hoy en día estos compiladores se llaman Embarcadero C++ Builder. Creo que actualmente admiten hasta C++ 11 con algo de C++ 14. Más información aquí.

No hace falta decir que, como estudiante, no deberías utilizar 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 sólo es contraproducente, sino que es directamente dañino 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 profesores son muy incompetentes. Por favor vincule esta publicación con ellos y su director.

Lundin avatar Aug 21 '2018 09:08 Lundin

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 realizar algunos cambios:

1. Cambie el nombre del archivo de encabezado de iostreama iostream.h
2. Y elimine la línea "using namespace std". requerido en Turbo C++. Aquí está el código modificado:

#include <iostream.h>

int main() 
{
  cout << "Hello, World!";
  return 0;
}
Yougansh Thakur avatar Jul 04 '2017 19:07 Yougansh Thakur