Domanda

Questo codice molto semplice mi dà tonnellate di errori:

#include <iostream>
#include <string>

int main() {
    std::string test = " ";
    std::cout << test;
}

Ho provato a compilarlo su Linux digitando gcc -o simpletest simpletest.cpp sulla console. Non riesco a capire perché non funzioni. Che cosa sta succedendo?

È stato utile?

Soluzione

Prova a usare 'g ++' invece di 'gcc'.

Altri suggerimenti

Per aggiungere ciò che altri hanno detto: g ++ è il compilatore GNU C ++. gcc è la raccolta di compilatori GNU ( non il compilatore GNU C, come molti credono). gcc funge da frontend per g ++ durante la compilazione di fonti C ++. gcc può compilare C, C ++, Objective-C, Fortran, Ada, assembly e altri.

Il motivo per cui non riesce a compilare con gcc è che è necessario il collegamento nella libreria standard C ++. Per impostazione predefinita, g ++ fa questo, ma gcc no. Per collegarti nella libreria standard C ++ usando gcc , usa quanto segue:

gcc -o simpletest simpletest.cpp -lstdc++

Prova:

g++ -o simpletest simpletest.cpp

Prova con g ++ -o simpletest simpletest.cpp . gcc è il compilatore C, mentre g ++ è il compilatore C ++ che collega anche nelle librerie C ++ richieste.

Inoltre, dovrai aggiungere un return 0; alla fine della tua funzione main () .

se il tuo compilatore è pignolo potresti aggiungere che tutti gli restituiscono 0; alla fine lì

Hai dichiarato il tuo main () come restituzione di un int ma non hai una dichiarazione di reso. Aggiungi return 0; e vedi se questo aiuta. Se ciò non risolve il tuo problema, prova a modificare il tuo post per includere alcune righe rappresentative di quegli errori che stai riscontrando e forse possiamo aiutarti meglio.

g ++ è stata la risposta giusta anche per me, l'ho votata, grazie.

Ma il mio codice, un po 'strano che uso dal 13 febbraio 1998 (primo commento), per calcolare la retribuzione lorda effettiva e la ritenuta d'acconto per la tata di nostro figlio, era di gran lunga troppo semplice anche per g ++. In termini dell'esempio sopra, il mio dinosauro conforme alla seconda edizione di Stroustrup è andato:

// too simple!

#include <iostream.h>
#include <stdlib.h>

main() {
    cout << "Hello World!" << endl;
}

Questo ti darà una finestra terminale completa di messaggi di errore. Tutto tranne le parentesi graffe è un errore! E manca una linea di ritorno. Il tempo era, questo si sarebbe compilato ed eseguito correttamente in ambienti di sviluppo commerciale C ++ ...

Calcolando la nuova scuola, ora sto usando:     // abbastanza semplice

#include <iostream>
#include <stdlib.h>

int main(int argc, char* argv[] ) {
    std::cout << "Hello World!" << std::endl;
//  TODO - this ought to return success, 0
}

L'interrogatore originale aveva lo std :: cout e usava la stringa da

 <string>...  

" semplice " è un termine relativo ...

Bill

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top