2010-10-18 12 views
19

Ottengo questi errori dopo l'emissione di un comando g ++ su un file .cpp: errore: 'exit' non è stato dichiarato in questo ambito errore: 'printf' non è stato dichiarato in questo ambitoC++ su Linux non riconosce comandi come exit() e printf()

Il problema è che quando ho compilato questo programma su un'altra macchina Linux, tutto è andato bene. Ho provato a cercare in giro, ma tutto quello che ho trovato è stato che ho bisogno di includere file come "stdlib.h".

Potrebbe essere che manchi qualche libreria sul mio sistema operativo? Se sì, quale potrebbe essere?

+4

Si prega di inviare il codice, probabilmente mancano intestazioni. – birryree

+0

Oppure una dichiarazione di utilizzo. –

risposta

27

Le versioni recenti di GCC sono diventate più restrittive in merito alle responsabilità che il programmatore deve soddisfare. Includere l'intestazione cstdlib, cstdio, ecc. E accedere a queste funzioni dallo spazio dei nomi std.

+0

#include #include utilizzando namespace std; Questa è l'intestazione corrente. In qualche modo funziona proprio con questo su altri sistemi operativi Linux, e ho bisogno di scoprire come. Aggiungere intestazioni extra a questo non è un'opzione al momento. – Max

+2

Quindi la compilazione nelle versioni recenti di GCC è * anche * non un'opzione al momento. La tua chiamata. –

+1

Hmm, va bene. C'è un modo per aggirare questo? Forse installare qualcosa da qualche parte o modificare alcuni parametri? Avete qualche idea tra quali versioni di gcc questo cambiamento si è verificato? – Max

2

Se hai bisogno di una rapida (e sporco) fissare provare:

using namespace std; 

anche assicurarsi che si sono comprese le intestazioni io appropriate.

3

nel terminale: - quando si scrive uscita man: - mostrerà

exit - cause normal process termination 

SINOSSI # include stdlib.h

void exit(int status); 

modo richiesto di definire un'intestazione #include stdlib. h

9

In particolare per ‘exit’ was not declared in this scope tutto ciò che serve è:

#include <stdlib.h>