Warum lässt sich ein einfaches Programm im „Hello World“-Stil nicht mit Turbo C++ kompilieren?

Lesezeit: 8 Minuten

Warum lasst sich ein einfaches Programm im „Hello World Stil nicht
n. 1.8e9-wo-ist-meine-Aktie m.

Ich habe angefangen, C++ für meinen Programmierkurs zu lernen. Ich habe dieses “Hello World”-Programm heruntergeladen:

#include <iostream>
using namespace std;

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

aber Turbo C++ beschwert sich:

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'

Was ist falsch an diesem sehr einfachen Programm? Wie kann ich diese Fehler korrigieren?

  • Dies soll eine standardmäßige Dupe-Umleitung für Fragen zu Turbo C++-Problemen sein. Viele dieser Fragen werden in der Regel schnell mit nur einer kurzen Erklärung in Kommentaren erledigt, während sie eine richtige Antwort wirklich gebrauchen können. Verbesserungen willkommen.

    – n. 1.8e9-wo-ist-meine-Aktie m.

    1. Juli 2017 um 16:25 Uhr

  • schlagen Sie vor, zu erwähnen, welche Version von Turbo C++ Sie verwenden. Die Version 2006 kam mit diesem Programm zurecht.

    – MM

    1. Juli 2017 um 23:04 Uhr

  • “Ich habe angefangen, C++ für meinen Programmierkurs zu lernen.”. Das ist eine Lüge. Zeitraum.

    – Bugwheels94

    8. Juli 2017 um 0:09 Uhr

  • @bugwheels94 Sieh dir das an.

    – n. 1.8e9-wo-ist-meine-Aktie m.

    8. Juli 2017 um 9:59 Uhr

  • @nm Ich weiß nicht, ob Bugwheels das gemeint haben, aber ich habe sie so verstanden, dass sie das bedeuten, wenn man es unterrichtet TurboC++ (insbesondere altes TurboC++, das dies nicht kompilieren kann), dann lernen sie nicht C++ (was viele Leute, mich eingeschlossen, implizit annehmen Standard C++).

    – Erorika

    1. August 2017 um 11:47 Uhr


Warum lasst sich ein einfaches Programm im „Hello World Stil nicht
n. 1.8e9-wo-ist-meine-Aktie m.

Es gibt kein Problem mit diesem Programm. (Außer wahrscheinlich einigen stilistischen Problemen –
using namespace std ist nicht zu empfehlen). Das Problem liegt bei Turbo C++. Es ist eine sehr alte Software. Es implementiert einen Dialekt von C++, sog Prä-ANSI C++, die Anfang dieses Jahrtausends völlig außer Gebrauch gekommen ist. Der erste ANSI-Standard für C++ wurde 1998 veröffentlicht, dann gab es die Version 2003, die Version 2011, die Version 2014, die Version 2017, und jetzt erwarten wir, dass die Version 2020 offiziell veröffentlicht wird. Jede dieser Standardrevisionen brachte mehr oder weniger bedeutende Änderungen an der Sprache mit sich.

Für Turbo C++ müssen Sie das Programm wie folgt ändern:

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

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

Wenn Sie sich dieses Programm ansehen, mag der Unterschied zwischen dem modernen C++-Dialekt und dem von Turbo C++ akzeptierten gering erscheinen. Es wird jedoch viel größer, wenn Ihre Programme komplexer werden.

Während Sie das Programmieren mit Turbo C++ lernen können, würde ich dringend empfehlen, dies aufgrund der folgenden Probleme zu vermeiden, wenn dies menschlich möglich ist:

  1. Sie werden eine Sprache lernen, die einer in der Industrie verwendeten Sprache in gewisser Weise ähnelt, sich aber dennoch ohne triftigen Grund stark unterscheidet. Wenn Sie vorhaben, C++ für echte Softwareentwicklung zu schreiben, müssen Sie viel umlernen. Es ist viel einfacher, modernes C++ sofort zu lernen.
  2. Es gibt keine vorhandene Literatur über Turbo C++. Nahezu 100 % des C++-Materials, das Sie im Internet oder in den Büchern finden, ist nicht direkt auf Turbo C++ anwendbar. Einige benötigen nur eine geringfügige Anpassung, während andere Materialien völlig unbrauchbar sind. So ziemlich die einzige Hilfequelle, die Ihnen sofort zur Verfügung steht, ist die integrierte Turbo C++-Hilfe.
  3. Nur wenige Leute erinnern sich an Turbo C++. Wenn Sie Fragen in Foren stellen, geben Sie immer an, dass Sie einen Prä-ANSI-Dialekt verwenden, um Antworten herauszufiltern, die auf die moderne Version der Sprache ausgerichtet sind. Sie werden wahrscheinlich bei jeder Frage, die Sie stellen, eine Reihe von Kommentaren erhalten, in denen Sie aufgefordert werden, sofort aufzuhören und zu einem modernen Compiler zu wechseln.

Es gibt viele moderne kostenlose (wie in Biersowie im Rede) Compiler und IDEs, die Sie anstelle von Turbo C++ verwenden können. Einige davon sind:

  1. Visual C++ Community Edition ist eine IDE und ein Compiler von Microsoft
  2. Code::Blöcke ist eine leichtgewichtige IDE. Unter Windows wird es mit einem etwas veralteten Compiler ausgeliefert, aber Sie können selbst einen moderneren Compiler installieren
  3. Eclipse-CDT ist eine leistungsstarke plattformübergreifende IDE. Es wird nicht mit einem eigenen Compiler ausgeliefert, daher müssen Sie einen separaten Compiler installieren. Verwenden Sie unter Windows zB MinGW.
  4. Viel mehr
  5. Darüber hinaus gibt es viele Online-Compiler wie z http://ideone.com, https://www.onlinegdb.com/ und http://coliru.stacked-crooked.com/Plus viel mehr (Diese sind meistens gut zum Ausprobieren von Ideen und zum Schreiben sehr kleiner Programme).
  6. Beide Clang/LLVM und GCC sind gratis Software Compiler, die neuere Versionen von C++ unterstützen.

Bedauerlicherweise scheinen einige Schulen/Lehrer die Schüler sogar heute noch dazu zu zwingen, Turbo C++ zu verwenden. Leider kann diese Community das nicht beheben. Wenn Sie sich in dieser Situation befinden, bereiten Sie sich darauf vor, nicht viel Hilfe von außen zu erhalten.

  • @Rakete1111 Ich denke, es ist eher im Sinne von “Dieses Programm enthält kein Problem nach dem aktuellen Standard.” Ob es ein guter Programmierstil ist, ist eine andere Sache.

    – Hatted Hahn

    1. Juli 2017 um 16:29 Uhr


  • @Rakete1111 daran ist nichts auszusetzen verantwortlich Gebrauch von using namespace std. Es mag eine gute pädagogische Entscheidung sein, es neuen Programmierern beizubringen, aber es ist nicht per se moralisch falsch.

    – n. 1.8e9-wo-ist-meine-Aktie m.

    1. Juli 2017 um 16:48 Uhr

  • I stimme zu using namespace std ist eine schlechte Übung, aber ich denke, es gehört in diese Frage, weil die C++-Hello-World-Programme, die Sie online finden, dies fast immer tun. Es ist also wichtig, sich darüber im Klaren zu sein, dass dies nicht der Grund ist, der Turbo C++ unglücklich macht. Vielleicht sagen Sie statt “Es gibt kein Problem mit diesem Programm” “Dieses Programm ist gültig, gemäß der Strom C++-Standard; es sollte kompilieren.”

    – zol

    1. Juli 2017 um 21:56 Uhr

  • @Puppy Aus dem gleichen Grund sind alle Aufrufe von Standardfunktionen unverantwortlich, da Sie nicht wissen, welche neuen Überladungen hinzugefügt werden. Sie wissen auch nicht, welche Sprachmerkmale aus dem nächsten Standard verschwinden oder ihre Bedeutung ändern werden. Nicht alle Programme müssen jahrzehntelang leben oder auf beliebige Compiler portierbar sein.

    – n. 1.8e9-wo-ist-meine-Aktie m.

    2. Juli 2017 um 13:11 Uhr

  • “Nur wenige Leute erinnern sich an Turbo C++” Ich bin nicht einverstanden. Mindestens einem ganzen großen Land wird es aktiv beigebracht heute.

    – Leichtigkeitsrennen im Orbit

    2. Juli 2017 um 16:06 Uhr

1647004210 662 Warum lasst sich ein einfaches Programm im „Hello World Stil nicht
Lundin

“Turbo C++” kann zahlreiche Compiler bedeuten. Bei dieser Frage ist es wichtig, die Versionsnummer anzugeben.

  • Borland Turbo C++ bis Version 3.1 waren reine MS-DOS-Compiler in der klassischen Blue-Background-IDE. Diese wurden ungefähr zwischen 1989 und 1992 veröffentlicht, lange bevor C++ standardisiert wurde, was im Jahr 1998 geschah. Sie verwendeten also einen Vorstandard-Dialekt von C++.

    Vor allem nutzten sie die #include <iostream.h> Syntax statt Standard #include <iostream>deckte aber auch viele C++-Funktionen wie Namespaces, Templates usw. nicht ab. Die Template-Bibliothek STL war noch nicht Teil des Standards, daher war alles, was mit dieser Bibliothek zu tun hatte, ziemlich anders als das, was später zum Standard wurde.

  • Später in den 90er Jahren veröffentlichte Borland mehrere DOS/Windows-Compiler mit besserer Konformität. Irgendwo bis Version 5 hatten sie noch mit der vollständigen Konformität zu C++98 zu kämpfen, obwohl diese Windows-Versionen ziemlich nah dran waren.

  • Ende der 90er ließen sie den Namen „Turbo C++“ zugunsten von Borland C++ Builder fallen, das nicht nur eine IDE, sondern ein vollständiges RAD-Tool auf Delphi-Basis war. Diese Compiler waren vollständig kompatibel mit C++98 und später C++03.

  • Um 2005 entfernte Borland Compiler als Teil seiner Produktlinie. Aus den Compilern wurde „Codegear“, aus dem später Embarcadero wurde. Irgendwann zu dieser Zeit veröffentlichten sie eine kostenlose Version von Borland Builder, die sie “Turbo C++” nannten. Diese Version war vollständig konform zu C++03.

  • Heutzutage heißen diese Compiler Embarcadero C++ Builder. Ich glaube, sie unterstützen derzeit bis zu C++11 mit etwas C++14. Mehr Infos hier.

Als Student sollte man natürlich nur mit modernen Compilern arbeiten. MS-DOS-Compiler von 1991 beim C++-Lernen im Jahr 2018 zu verwenden, ist einfach Wahnsinn. Es ist nicht nur kontraproduktiv, sondern auch direkt schädlich und macht Sie zu einem schlechten C++-Programmierer. Wenn Ihre Schule Sie dazu zwingt, Turbo C++ 3.1 oder älter zu verwenden, dann ist Ihre Schule schlecht und Ihre Lehrer sind äußerst inkompetent. Bitte verlinken Sie diesen Beitrag mit ihnen und ihrem Schulleiter.

  • Turbo C++ ist 2020 in Indien noch üblich. Mehr und mehr„Das ist ein 40 Jahre alter veralteter Turbo C. Indische Colleges unterrichten es immer noch und lehnen es ab, etwas anderes zu unterrichten. Sie gaben mir null Punkte, weil ich es benutzte std::string anstatt char * in Prüfungen, weil sie nicht wissen, dass C++ standardisiert ist und char * ist veraltet.”.

    – Peter Mortensen

    11. Juli 2020 um 13:00 Uhr


  • @PeterMortensen Ja … es ist einigermaßen in Ordnung, C90 zu unterrichten (amüsanterweise ist es darin immer noch besser als Visual Studio aus dem Jahr 2020), aber der verwendete C ++ – Dialekt war nur drunter und drüber.

    – Ludin

    12. Juli 2020 um 18:09 Uhr

Warum lasst sich ein einfaches Programm im „Hello World Stil nicht
Yougansh Thakur

Turbo C++ ist ein sehr alter Compiler und unterscheidet sich ein wenig vom GNU C++ Compiler. Der von Ihnen freigegebene Code funktioniert perfekt mit dem GNU-Compiler, aber um ihn mit Turbo C++ auszuführen, müssen Sie einige Änderungen vornehmen:

1. Ändern Sie den Namen der Header-Datei von iostream zu iostream.h

2. Und entfernen Sie die Zeile „using namespace std“. Sie ist in Turbo C++ nicht erforderlich. Hier ist der geänderte Code:

#include <iostream.h>

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

  • Was fügt Ihre Antwort hinzu, was die akzeptierte nicht tut?

    – Rakete1111

    15. Juli 2017 um 10:25 Uhr

  • Kernpunkt für die Leute, die keine Zeit haben, lange Antworten zu lesen.

    – Yougansh Thakur

    16. Juli 2017 um 14:15 Uhr

  • es ist nicht “ein bisschen anders”, sondern ganz anders als C++-Compiler

    – phuklv

    14. August 2020 um 13:49 Uhr

990880cookie-checkWarum lässt sich ein einfaches Programm im „Hello World“-Stil nicht mit Turbo C++ kompilieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy