PROBLEMI IN C++ CON IL VOID

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

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.
Avatar utente
Tochiro
Linux 2.x
Linux 2.x
Messaggi: 263
Iscritto il: lun 27 giu 2005, 0:00
Contatta:

Messaggio da Tochiro »

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 :D

Avatar utente
Tochiro
Linux 2.x
Linux 2.x
Messaggi: 263
Iscritto il: lun 27 giu 2005, 0:00
Contatta:

Messaggio da Tochiro »

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.

gastone90

Messaggio da gastone90 »

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. :-)

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

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.

gastone90

Messaggio da gastone90 »

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)

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

vabbe', ci rinuncio 8). forse ti fanno pagare una tassa ogni return che metti! :lol:

homer84
Linux 2.x
Linux 2.x
Messaggi: 297
Iscritto il: gio 9 giu 2005, 0:00
Slackware: Current
Località: Torino

Messaggio da homer84 »

in C si puo tranquillamente pettere

main()
{
codice....
}

wsenza int e senza return, e facendo

gcc pippo.c -o pippo

non mi genera nessun errore(questo in C classico però, non C++)

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio da gallows »

homer84 ha scritto:in C si puo tranquillamente pettere

main()
{
codice....
}

wsenza int e senza return, e facendo

gcc pippo.c -o pippo

non mi genera nessun errore(questo in C classico però, non C++)
non esattamente..
con:
#include <stdio.h>
main()
{
printf("ciao");
}

Codice: Seleziona tutto

> 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
con:
#include <stdio.h>

int main()
{
printf("ciao");
return(0);
}

Codice: Seleziona tutto

> gcc -Wall pippo.c
>_
funziona lo stesso comunque ^_^

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

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! :roll:

gastone90

Messaggio da gastone90 »

si mi sa che seguiro' il tuo consiglio useless...

homer84
Linux 2.x
Linux 2.x
Messaggi: 297
Iscritto il: gio 9 giu 2005, 0:00
Slackware: Current
Località: Torino

Messaggio da homer84 »

A me non da nessun errore senza int e nemmeno nessun warning!
Bah, i misteri di C..

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio da gallows »

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?

Avatar utente
TheSnowBoarder
Linux 1.x
Linux 1.x
Messaggi: 139
Iscritto il: gio 30 giu 2005, 0:00
Località: Catania

Messaggio da TheSnowBoarder »

Se non vi piace

int main(int argc, char *argv[]) {



return 0;
}

potete sempre passare a Visual Basic

gastone90

Messaggio da gastone90 »

a cosa serve -Wall? non ho mai detto che microsoft è una cosa fatta bene e giusta, anzi, è una cosa vergognosa e ridicola a dir poco....

gastone90

Messaggio da gastone90 »

il visual basic non è un linguaggio di programmazione ;-)

Rispondi