web-dev-qa-db-fra.com

Pourquoi un programme de type "Hello World" ne se compile-t-il pas avec Turbo C ++?

J'ai commencé à apprendre le C++ pour mon cours de programmation. J'ai téléchargé ce programme "Hello World":

#include <iostream>
using namespace std;

int main() 
{
    cout << "Hello, World!";
    return 0;
}

mais Turbo C++ se plaint:

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'

Quel est le problème avec ce programme très simple? Comment puis-je corriger ces erreurs?

97
n.m.

Il n'y a pas de problème avec ce programme. (Sauf probablement quelques problèmes stylistiques - using namespace std n'est pas recommandé). Le problème est avec Turbo C++. C'est un très vieux logiciel. Il implémente un dialecte de C++, appelé pré-ANSI C++ , qui a complètement cessé d'être utilisé au début de ce millénaire. La première norme ANSI pour C++ a été publiée en 1998, puis la version 2003, la version 2011, la version 2014 et la version 2017, et nous prévoyons maintenant que la version 2020 sera officiellement publiée. Chacune de ces révisions standard a apporté des changements plus ou moins importants au langage.

Pour Turbo C++, vous devez modifier le programme comme suit:

#include <iostream.h>      // note the .h suffix
// using namespace std;    // Turbo C++ doesn't implement namespaces

int main() 
{
    cout << "Hello, World!";
    return 0;
}

Si vous regardez ce programme, la différence entre le dialecte C++ moderne et celui accepté par Turbo C++ peut sembler minime. Cependant, il deviendra beaucoup plus grand à mesure que vos programmes deviendront plus complexes.

Bien que vous puissiez apprendre à programmer avec Turbo C++, je vous recommande fortement de l’éviter si cela est humainement possible en raison des problèmes suivants:

  1. Vous allez apprendre une langue qui ressemble un peu à une langue populaire utilisée dans l'industrie, mais qui est très différente néanmoins, sans raison valable. Si vous envisagez de créer de vrais logiciels en C++, vous devrez apprendre beaucoup de choses. Il est beaucoup plus facile d'apprendre tout de suite le C++ moderne.
  2. Il n'y a pas de littérature existante sur Turbo C++. Près de 100% du matériel C++ que vous trouverez sur Internet ou dans les livres n'est pas directement applicable à Turbo C++ directement. Certains n'auront besoin que d'une adaptation mineure, tandis que d'autres seront complètement inutilisables. L’aide Turbo C++ intégrée est pratiquement la seule source d’aide immédiatement disponible.
  3. Peu de gens se souviennent de Turbo C++. Lorsque vous posez des questions sur des forums, indiquez toujours que vous utilisez un dialecte pré-ANSI afin de filtrer les réponses adaptées à la version moderne de la langue. Vous obtiendrez probablement un tas de commentaires vous suggérant d'arrêter immédiatement et de passer à un compilateur moderne pour chaque question que vous posez.

Il existe de nombreux compilateurs et IDE gratuits (tels que bière , ainsi que parole ) que vous pouvez utiliser à la place de Turbo C++. Certains d'entre eux comprennent:

  1. Visual C++ Community Edition est un IDE et un compilateur de Microsoft
  2. Code :: Blocks est un IDE léger. Sous Windows, il est livré avec un compilateur quelque peu obsolète, mais vous pouvez installer vous-même un compilateur plus moderne.
  3. Eclipse CDT est un puissant IDE multiplate-forme. Il n'est pas livré avec son propre compilateur, vous devez donc installer un compilateur séparé. Sous Windows, utilisez par exemple MinGW .
  4. beaucoup plus
  5. En outre, il existe de nombreux compilateurs en ligne tels que http://ideone.com , https://www.onlinegdb.com/ et http://coliru.stacked-crooked.com/ , plus beaucoup d'autres (ce sont principalement utiles pour essayer des idées et écrire de très petits programmes).
  6. Les deux Clang/LLVM et GCC sont logiciels libres des compilateurs prenant en charge les versions récentes de C++.

Malheureusement, certaines écoles/enseignants semblent obliger les étudiants à utiliser Turbo C++, même de nos jours. Malheureusement, cette communauté ne peut résoudre ce problème. Si vous vous trouvez dans cette situation, préparez-vous à ne pas pouvoir obtenir beaucoup d'aide extérieure.

155
n.m.

"Turbo C++" peut signifier de nombreux compilateurs. Lorsque vous posez cette question, il est important d'inclure le numéro de version.

  • Borland Turbo C++ jusqu'à la version 3.1 étaient des compilateurs MS DOS purs dans l'IDE classique en arrière-plan bleu. Celles-ci ont été publiées entre 1989 et 1992, bien avant que le langage C++ ne soit normalisé, comme ce fut le cas en 1998. Ils utilisaient donc un dialecte pré-standard du langage C++.

    Ils ont notamment utilisé le #include <iostream.h> _ syntaxe plutôt que la norme #include <iostream>, mais ne couvrait pas beaucoup de fonctionnalités C++ telles que les espaces de noms, les modèles, etc. La bibliothèque de modèles STL ne faisait pas encore partie de la norme, donc tout ce qui la concernait était assez différent de ce qui devint plus tard la norme.

  • Plus tard dans les années 90, Borland a publié plusieurs compilateurs DOS/Windows avec une meilleure conformité. Jusqu'à la version 5, quelque part, ils étaient toujours aux prises avec une conformité totale à C++ 98, bien que ces versions de Windows en soient assez proches.

  • À la fin des années 90, ils ont abandonné le nom "Turbo C++" en faveur de Borland C++ Builder, qui n'était pas simplement un IDE mais un outil complet RAD sur Delphi Ces compilateurs étaient entièrement compatibles avec C++ 98 et plus tard C++ 03.

  • Vers 2005, Borland a abandonné les compilateurs dans sa gamme de produits. Les compilateurs sont devenus "Codegear", qui est devenu plus tard Embarcadero. Quelque part à l'époque, ils ont publié une version gratuite de Borland Builder qu'ils ont baptisée "Turbo C++". Cette version était entièrement conforme à C++ 03.

  • De nos jours, ces compilateurs s'appellent Embarcadero C++ Builder. Je crois qu’ils prennent actuellement en charge jusqu’à C++ 11 avec du C++ 14. Plus d'infos ici.

Il va sans dire qu'en tant qu'étudiant, vous ne devez utiliser que des compilateurs modernes. Utiliser les compilateurs MS-DOS de 1991 pour apprendre le C++ en 2018 est tout simplement une folie. Non seulement il est contre-productif, mais il est directement nuisible et fera de vous un mauvais programmeur C++. Si votre école vous oblige à utiliser Turbo C++ 3.1 ou une version plus ancienne, votre école va mal et vos professeurs sont gravement incompétents. Veuillez relier ce message à eux et à leur directeur.

8
Lundin

Turbo C++ est un très vieux compilateur et il est un peu différent du compilateur GNU C++. Le code que vous avez partagé fonctionnera parfaitement avec le compilateur GNU mais pour l'exécuter avec Turbo C++, vous devez apporter quelques modifications:

1. Remplacez le nom du fichier d’en-tête de iostream par iostream.h
2. Et supprimez la ligne "using namespace std" Elle n'est pas requise dans Turbo C++. Voici le code modifié:

#include <iostream.h>

int main() 
{
  cout << "Hello, World!";
  return 0;
}
5
Yougansh Thakur