Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
su slackware 10.1 hai sia cc che ti serve per compilare codice c sia g++ che serve per il c++, oltre che al compilatore per python ed un sacco di altri strumenti per la programmazione, cosa che win non ti fornirà mai.
sotto altuo utente c'è scritto windows perchè il moderatore ha deciso che fino a dieci messaggi esca win, anche a me sta un pò antipatico, ma sono solo 10 messaggi, pazienza.
la sintassi principale dei compilatori è:
cc -o NOMEESEGUIBILE NOMEFILE.C
g++ -o NOMEESEGUIBILE NOMEFILE.CPP
ma ci sono un sacco di altre opzioni come -g per il debug leggi il man
Ho fatto un paio di prove con void main()
in c ho un warning da parte del compilatore ma è tutto ok il programma viene compilato ed eseguito correttamente.
in c++ ho un error quindi non posso violare la dichiarazione int di main.
si ma ormai ho chiarito tutto se voglio che la funzione principale non mi restituisca nessun valore in c++ l'unico modo è questo : int main(void). grazie per l'aiuto.
in quel modo DEVI ritornare qualcosa. ma ti costa così tanto farlo? lo standard vuole che main ritorni 0 se il programma ha fatto il suo dovere correttamente e un altro valore (solitamente 1, ma non è detto) se si è verificato qualche errore (vedi anche le costanti EXIT_SUCCESS e EXIT_FAILURE definite in stdlib.h, se programmi in c). quello che ritorni dal main sarà poi disponibile in shell come $?.
il void dentro alle parentesi in int main (void), non ha nulla a che vedere con quel che ritorni, bensì con quel che fornisci al programma sulla linea di comando: così vuol dire che non gli puoi fornire niente.
se metti int main (void) e non ritorni niente, dovresti beccarti un warning tipo "control reaches end of non-void function". metti un return (0); e bon, non mi pare troppo faticoso.
infine, ribadisco che a tutte le altre funzioni che scrivi tu, puoi benissimo non far ritornare niente, ma main è una funzione particolare, che ha un prototipo ben definito.
ma tu che compilatore usi? a me facendo main(void) non mi avverte assolutamente di niente, non mi da nessun errore. (uso g++, kdevelop 3.2.1, slackware 10.1)
> gcc -Wall pippo.c
pippo.c:4: warning: return type defaults to `int'
pippo.c: In function `main':
pippo.c:6: warning: control reaches end of non-void function
io non capisco la radice del problema. cosa costa seguire questo dannato standard e dichiarare main come "int main (void)"!? del resto il programma ritorna IN OGNI CASO qualcosa al sistema operativo, anche se ci mettete void (e questo è il contenuto del registro AL, che in quel caso rimane impostato ad un valore + o - sconosciuto, ma comunque un valore ce l'ha, mica scompare!). e poi è uniformemente accettato che un programma che ha avuto esito corretto ritorni 0 all'OS, costa così tanto farlo? è una riga un +, mica 200!
homer84 ha scritto:A me non da nessun errore senza int e nemmeno nessun warning!
Bah, i misteri di C..
ma -Wall al compilatore glielo dai?
comunque non possiamo criticare microsoft (o chi come lei) perché non rispetta gli standard e poi siamo i primi a programmare come ci pare, non trovi?