Ich habe angefangen, C ++ für meine Programmierklasse 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 los mit diesem sehr einfachen Programm? Wie kann ich diese Fehler korrigieren?
Antworten:
Es gibt kein Problem mit diesem Programm. (Außer wahrscheinlich einigen Stilproblemen -
using namespace std
wird nicht empfohlen). Das Problem ist mit Turbo C ++. Es ist eine sehr alte Software. Es implementiert einen Dialekt von C ++, das sogenannte Pre-ANSI-C ++ , das zu Beginn dieses Jahrtausends völlig außer Betrieb war. 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 in der Sprache mit sich.Für Turbo C ++ müssen Sie das Programm folgendermaßen ändern:
Wenn Sie sich dieses Programm ansehen, scheint der Unterschied zwischen dem modernen C ++ - Dialekt und dem von Turbo C ++ akzeptierten gering zu sein. Es wird jedoch viel größer, da Ihre Programme immer komplexer werden.
Obwohl Sie das Programmieren mit Turbo C ++ lernen können, würde ich dringend empfehlen, dies zu vermeiden, wenn dies aufgrund der folgenden Probleme menschlich möglich ist:
Es gibt viele moderne kostenlose Compiler und IDEs (wie sowohl in Bier als auch in Sprache ), die Sie anstelle von Turbo C ++ verwenden können. Einige davon sind:
Bedauerlicherweise scheinen einige Schulen / Lehrer die Schüler zu zwingen, Turbo C ++ auch heute noch zu verwenden. Leider kann diese Community dies nicht beheben. Wenn Sie sich in dieser Situation befinden, bereiten Sie sich darauf vor, nicht viel Hilfe von außen zu bekommen.
quelle
using namespace std
. Es mag eine gute pädagogische Entscheidung sein oder auch nicht, es neuen Programmierern beizubringen, aber es ist an sich nicht moralisch falsch.using namespace std
eine schlechte Praxis ist, aber ich denke, dass sie in diese Frage gehört, da die C ++ - Hallo-Welt-Programme, die Sie online finden, dies fast immer tun. Es ist also wichtig klar zu sein, dass dies Turbo C ++ nicht unglücklich macht. Vielleicht sagen Sie anstelle von "Es gibt kein Problem mit diesem Programm" "Dieses Programm ist gemäß dem aktuellen C ++ - Standard gültig ; es sollte kompiliert werden.""Turbo C ++" kann zahlreiche Compiler bedeuten. Wenn Sie diese Frage stellen, ist es wichtig, die Versionsnummer anzugeben.
Borland Turbo C ++ bis Version 3.1 waren reine MS DOS-Compiler in der klassischen blauen Hintergrund-IDE. Diese wurden ungefähr zwischen 1989 und 1992 veröffentlicht, lange bevor C ++ standardisiert wurde, was im Jahr 1998 geschah. Deshalb verwendeten sie einen vorstandardisierten Dialekt von C ++.
Vor allem verwendeten sie die
#include <iostream.h>
Syntax anstelle des Standards#include <iostream>
, deckten aber auch nicht viele C ++ - Funktionen wie Namespaces, Vorlagen usw. ab. Die Vorlagenbibliothek STL war noch nicht Teil des Standards, sodass alles, was mit dieser Bibliothek zu tun hatte, hübsch war anders als das, was später Standard wurde.Später in den 90er Jahren veröffentlichte Borland mehrere DOS / Windows-Compiler mit besserer Konformität. Bis zu Version 5 hatten sie irgendwo noch Probleme mit der vollständigen Konformität mit C ++ 98, obwohl diese Windows-Versionen ziemlich nahe daran waren.
In den späten 90ern wurde der Name "Turbo C ++" zugunsten von Borland C ++ Builder gestrichen, 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 höher C ++ 03.
Um 2005 hat Borland Compiler als Teil seiner Produktlinie eingestellt. Die Compiler wurden zu "Codegear", das später zu Embarcadero wurde. Irgendwann veröffentlichten sie eine kostenlose Version von Borland Builder mit dem Namen "Turbo C ++". Diese Version entsprach vollständig C ++ 03.
Heutzutage heißen diese Compiler Embarcadero C ++ Builder. Ich glaube, sie unterstützen derzeit bis zu C ++ 11 mit einigen C ++ 14. Mehr Infos hier.
Natürlich sollten Sie als Student nur moderne Compiler verwenden. Die Verwendung von MS DOS-Compilern aus dem Jahr 1991 beim Erlernen von C ++ im Jahr 2018 ist einfach Wahnsinn. Es ist nicht nur kontraproduktiv, es ist auch direkt schädlich und macht Sie zu einem schlechten C ++ - Programmierer. Wenn Ihre Schule Sie zwingt, Turbo C ++ 3.1 oder älter zu verwenden, ist Ihre Schule schlecht und Ihre Lehrer sind stark inkompetent. Bitte verlinken Sie diesen Beitrag mit ihnen und ihrem Auftraggeber.
quelle
std::string
anstattchar *
in Prüfungen, weil sie nicht wissen , dass C ++ ist standardisiert undchar *
ist veraltet.".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. Um ihn jedoch mit Turbo C ++ auszuführen, müssen Sie einige Änderungen vornehmen:
1. Ändern Sie den Namen der Header-Datei von
iostream
iniostream.h
2. Und entfernen Sie die Zeile "using namespace std". Dies ist nicht der Fall erforderlich in Turbo C ++. Hier ist der geänderte Code:
quelle