Perché un semplice programma “Hello World” non viene compilato con Turbo C ++?

Ho iniziato ad imparare C ++ per la mia class di programmazione. Ho scaricato questo programma “Hello World”:

#include  using namespace std; int main() { cout << "Hello, World!"; return 0; } 

ma il Turbo C ++ si lamenta:

 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' 

Cosa c’è di sbagliato in questo programma molto semplice? Come posso correggere questi errori?

Non ci sono problemi con questo programma. (Tranne probabilmente alcuni problemi stilistici – l’ using namespace std non è raccomandato). Il problema è con Turbo C ++. È un software molto vecchio. Implementa un dialetto di C ++, il cosiddetto pre-ANSI C ++ , che è completamente caduto in disuso all’inizio di questo millennio. Il primo standard ANSI per C ++ è stato pubblicato nel 1998, poi c’era la versione del 2003, la versione del 2011, la versione 2014, e ora ci aspettiamo che la versione 2017 sia ufficialmente pubblicata. Ognuna di queste revisioni standard ha apportato modifiche più o meno significative alla lingua.

Per Turbo C ++ devi modificare il programma in questo modo:

 #include  // note the .h suffix // using namespace std; // Turbo C++ doesn't implement namespaces int main() { cout << "Hello, World!"; return 0; } 

Se guardi questo programma, la differenza tra il moderno dialetto C ++ e quello accettato da Turbo C ++ può sembrare piccolo. Tuttavia crescerà molto più grande man mano che i programmi diventeranno più complessi.

Mentre puoi imparare a programmare usando Turbo C ++, ti consiglio vivamente di evitarlo se umanamente ansible a causa dei seguenti problemi:

  1. Imparerai una lingua che è in qualche modo simile a un linguaggio popolare usato nel settore, ma è comunque molto diversa, senza una buona ragione. Se hai intenzione di C ++ per lo sviluppo di software reale, dovrai imparare di nuovo molto. È molto più facile imparare subito il C ++ moderno.
  2. Non c'è letteratura esistente su Turbo C ++. Quasi il 100% del materiale C ++ che trovi su Internet o nei libri non è direttamente applicabile a Turbo C ++. Alcuni avranno bisogno solo di un piccolo adattamento, mentre altri materiali sono completamente inutilizzabili. Praticamente l'unica fonte di aiuto immediatamente disponibile è l'aiuto integrato di Turbo C ++.
  3. Poche persone ricordano Turbo C ++. Quando fai domande sui forum, specifica sempre che stai utilizzando un dialetto pre-ANSI per filtrare le risposte orientate verso la versione moderna della lingua. Probabilmente riceverai un sacco di commenti che ti suggeriscono di fermarti immediatamente e passare a un compilatore moderno per ogni domanda che fai.

Ci sono molti compilatori e IDE gratuiti moderni (come nella birra , oltre che in parlato ) che puoi utilizzare al posto di Turbo C ++. Alcuni di questi includono:

  1. Visual C ++ Community Edition è un IDE e un compilatore di Microsoft
  2. Code :: Blocks è un IDE leggero. Su Windows viene fornito con un compilatore un po 'obsoleto, ma è ansible installare un compilatore più moderno
  3. Eclipse CDT è un potente IDE multipiattaforma. Non viene fornito con il proprio compilatore, quindi è necessario installare un compilatore separato. Su Windows, usa ad esempio MinGW .
  4. Molti altri
  5. Inoltre, ci sono molti compilatori online come http://ideone.com , https://www.onlinegdb.com/ e http://coliru.stacked-crooked.com/ , più molti altri (questi sono per lo più buoni per provare idee e scrivere programmi molto piccoli).
  6. Sia Clang / LLVM che GCC sono compilatori di software gratuiti che supportano versioni recenti di C ++.

Purtroppo, alcune scuole / insegnanti sembrano obbligare gli studenti a utilizzare Turbo C ++ anche in questo giorno ed età. Sfortunatamente questo non è qualcosa che questa community può risolvere. Se ti trovi in ​​questa situazione, preparati a non essere in grado di ottenere molto aiuto esterno.

Turbo C ++ è un compilatore molto vecchio ed è leggermente diverso dal compilatore GNU C ++. Il codice che hai condiviso funzionerà perfettamente con il compilatore GNU ma per eseguirlo con Turbo C ++ devi apportare alcune modifiche:

1. Modificare il nome del file di intestazione da iostream a iostream.h
2. E rimuovere la riga “using namespace std” Non è richiesta in Turbo C ++. Ecco il codice modificato:

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

“Turbo C ++” può significare numerosi compilatori. Quando si fa questa domanda, è importante includere il numero di versione.

  • Borland Turbo C ++ fino alla versione 3.1 erano puri compilatori MS DOS nel classico sfondo blu IDE. Questi sono stati rilasciati all’incirca tra il 1989 e il 1992, molto prima che il C ++ fosse standardizzato, cosa che accadde nell’anno 1998. E così hanno usato un dialetto pre-standard del C ++.

    In particolare hanno usato la syntax #include piuttosto che lo standard #include , ma inoltre non coprivano un sacco di funzioni C ++ come namespace, template ecc. La libreria template STL non faceva parte di lo standard ancora, quindi tutto ciò che riguardava quella libreria era abbastanza diverso da quello che in seguito divenne standard.

  • Più tardi negli anni ’90, Borland pubblicò diversi compilatori DOS / Windows con una migliore conformità. Fino alla versione 5 da qualche parte avevano ancora problemi con la completa conformità al C ++ 98, sebbene queste versioni di Windows fossero abbastanza vicine.

  • Verso la fine degli anni ’90, hanno abbandonato il nome “Turbo C ++” in favore di Borland C ++ Builder, che non era solo un IDE ma uno strumento RAD completo basato su Delphi. Questi compilatori erano pienamente compatibili con C ++ 98 e successivi C ++ 03.

  • Intorno al 2005, Borland abbandonò i compilatori come parte della loro linea di prodotti. I compilatori divennero “Codegear”, che in seguito divenne Embarcadero. A un certo punto, hanno rilasciato una versione gratuita di Borland Builder che hanno chiamato “Turbo C ++”. Questa versione era completamente conforms a C ++ 03.

  • Al giorno d’oggi questi compilatori sono chiamati Embarcadero C ++ Builder. Credo che attualmente supportino fino al C ++ 11 con alcuni C ++ 14. Maggiori informazioni qui.

Inutile dire che, da studente, non dovresti usare nulla se non i moderni compilatori. Usare i compilatori MS DOS del 1991 quando si impara a usare C ++ nell’anno 2018 è semplicemente follia. Non solo è controproducente, è direttamente dannoso e ti farà diventare un programmatore C ++. Se la tua scuola ti costringe a utilizzare Turbo C ++ 3.1 o precedente, la tua scuola è ctriggers e i tuoi insegnanti sono severamente incompetenti. Si prega di colbind questo post a loro e al loro principale.