Zacząłem uczyć się C ++ dla mojej klasy programowania. Pobrałem ten program „Hello World”:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
ale Turbo C ++ narzeka:
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'
Co jest nie tak z tym bardzo prostym programem? Jak mogę poprawić te błędy?
Odpowiedzi:
Nie ma problemu z tym programem. (Poza pewnymi problemami stylistycznymi -
using namespace std
nie jest to zalecane). Problem dotyczy Turbo C ++. To bardzo stare oprogramowanie. Implementuje dialekt C ++, tak zwany pre-ANSI C ++ , który całkowicie wypadł z użycia na początku tego tysiąclecia. Pierwszy standard ANSI dla C ++ został opublikowany w 1998 roku, potem była wersja 2003, 2011, 2014, 2017, a teraz spodziewamy się oficjalnej publikacji wersji 2020. Każda z tych standardowych poprawek przyniosła mniej lub bardziej istotne zmiany w języku.W przypadku Turbo C ++ musisz zmodyfikować program w następujący sposób:
Jeśli spojrzysz na ten program, różnica między współczesnym dialektem C ++ a tym akceptowanym przez Turbo C ++ może wydawać się niewielka. Jednak będzie znacznie większy, ponieważ Twoje programy będą stawały się bardziej złożone.
Chociaż możesz nauczyć się programowania przy użyciu Turbo C ++, zdecydowanie zalecam unikanie tego, jeśli to tylko możliwe, z powodu następujących problemów:
Istnieje wiele nowoczesnych darmowych (tak jak w piwie , a także w mowie ) kompilatorów i IDE, których można używać zamiast Turbo C ++. Niektóre z nich obejmują:
Niestety, niektóre szkoły / nauczyciele wydają się zmuszać uczniów do używania Turbo C ++ nawet w dzisiejszych czasach. Niestety nie jest to coś, co ta społeczność może naprawić. Jeśli znajdziesz się w takiej sytuacji, przygotuj się na brak możliwości uzyskania dużej pomocy z zewnątrz.
źródło
using namespace std
. Nauczenie nowych progamistów może być dobrą decyzją pedagogiczną lub nie, ale nie jest to moralnie złe samo w sobie.using namespace std
to zła praktyka, ale myślę, że należy to do tego pytania, ponieważ programy C ++ hello world, które można znaleźć w Internecie, prawie zawsze to robią. Dlatego ważne jest, aby było jasne, że to nie jest powodem, dla którego Turbo C ++ jest nieszczęśliwe. Być może zamiast „Nie ma problemu z tym programem” powiedz „Ten program jest poprawny, zgodnie z obecnym standardem C ++; powinien się kompilować”.„Turbo C ++” może oznaczać wiele kompilatorów. Zadając to pytanie, ważne jest, aby podać numer wersji.
Borland Turbo C ++ do wersji 3.1 były czystymi kompilatorami MS DOS w klasycznym IDE z niebieskim tłem. Zostały one wydane mniej więcej między 1989 a 1992 rokiem, na długo przed ujednoliceniem C ++, co miało miejsce w 1998 roku. I dlatego używali przedstandardowego dialektu C ++.
Przede wszystkim używali
#include <iostream.h>
raczej składni niż standardu#include <iostream>
, ale nie obejmowali też wielu funkcji C ++, takich jak przestrzenie nazw, szablony itp. Biblioteka szablonów STL nie była jeszcze częścią standardu, więc wszystko związane z tą biblioteką było ładne różni się od tego, co później stało się standardem.Później w latach 90-tych Borland wypuścił kilka kompilatorów DOS / Windows o lepszej zgodności. Aż do wersji 5 gdzieś nadal borykali się z pełną zgodnością z C ++ 98, chociaż te wersje Windows były dość bliskie.
Pod koniec lat 90. zrezygnowali z nazwy „Turbo C ++” na rzecz Borland C ++ Builder, który był nie tylko IDE, ale kompletnym narzędziem RAD opartym na Delphi. Te kompilatory były w pełni zgodne z C ++ 98 i późniejszym C ++ 03.
Około 2005 roku firma Borland porzuciła kompilatory jako część swojej linii produktów. Kompilatorami stał się „Codegear”, który później stał się Embarcadero. Gdzieś wtedy wydali darmową wersję Borland Builder, którą nazwali „Turbo C ++”. Ta wersja była w pełni zgodna z C ++ 03.
Obecnie te kompilatory nazywają się Embarcadero C ++ Builder. Myślę, że obecnie obsługują do C ++ 11 z niektórymi C ++ 14. Więcej informacji tutaj.
Nie trzeba dodawać, że jako student nie powinieneś używać niczego poza nowoczesnymi kompilatorami. Używanie kompilatorów MS DOS z 1991 roku podczas nauki C ++ w roku 2018 to po prostu szaleństwo. Nie tylko przynosi efekt przeciwny do zamierzonego, ale jest bezpośrednio szkodliwy i uczyni z Ciebie złego programistę C ++. Jeśli Twoja szkoła zmusza Cię do korzystania z Turbo C ++ 3.1 lub starszego, oznacza to, że jest zła, a nauczyciele są bardzo niekompetentni. Połącz ten post z nimi i ich dyrektorem.
źródło
std::string
zamiastchar *
w egzaminach, bo nie wiedzą, że C ++ jest znormalizowany ichar *
jest przestarzałe." .Turbo C ++ jest bardzo starym kompilatorem i różni się nieco od kompilatora GNU C ++. Kod, który udostępniłeś, będzie działał doskonale z kompilatorem GNU, ale aby uruchomić go z Turbo C ++, musisz wprowadzić kilka zmian:
1. Zmień nazwę pliku nagłówkowego z
iostream
naiostream.h
2. I usuń wiersz "using namespace std" To nie jest wymagane w Turbo C ++. Oto zmodyfikowany kod:
źródło