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
Firetux
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 giu 2004, 0:00
Località: Lecco
Contatta:

Messaggio da Firetux »

dovrebbe essere nella directory d del cd. se non lo hai lo trovi qui
ftp://ftp.slackware.com/pub/slackware/s ... i486-1.tgz

Il Windows che hai sotto il tuo pinguino è perché non hai ancora raggiunto i 10 post sul forum! ...scrivendo nel forum vedrai che cambierà automaticamente :wink:

gastone90

Messaggio da gastone90 »

ma in definitiva c'è un modo per usare void main() senza far ritornare niente? nei brutti tempi in cui usavo windows scrivendo i prog con Borland c++ builder potevo farla senza problemi una funzione void senza restituire niente.

gastone90

Messaggio da gastone90 »

finalmente un po' sparando a caso ci sono arrivato: basta definire la funzione in questo modo:

int main(void)
{
//...
}

Senza dare nessun valore di ritorno.

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio da absinthe »

gastone90 ha scritto:finalmente un po' sparando a caso ci sono arrivato: basta definire la funzione in questo modo:

int main(void)
{
//...
}

Senza dare nessun valore di ritorno.
? strano mi sa che c'ha un return di default altrimenti dovrebbe partire una roba tipo: function main must return a value...

ma alla fine che te frega se ritorni un tipo?

gastone90

Messaggio da gastone90 »

cosa intendi Absinthe? a me interessa che non restituisca nessun valore perchè, se quella fosse una funzione interna ad un programma, dopo il valore di ritorno potrebbe dare problemi; in questo modo invece la funzione compie quello che gli voglio far fare e non di più. io l'ho fatto con kdevelop e slackware10.1 e non mi da problemi. Tu cosa hai usato?

Avatar utente
zzt
Linux 2.x
Linux 2.x
Messaggi: 249
Iscritto il: lun 7 mar 2005, 0:00

Messaggio da zzt »

Se fosse la funzione interna di un programma, non sarebbe un main...
(...forse ho beccato la consecutio... ) :wink:

gastone90

Messaggio da gastone90 »

il nome della funzione non sarebbe main ma magari funzione1, ma il senso è sempre lo stesso


int main(void)
{
int funzione1(void)
{
}
}

Avatar utente
zzt
Linux 2.x
Linux 2.x
Messaggi: 249
Iscritto il: lun 7 mar 2005, 0:00

Messaggio da zzt »

si, ma hai provato a farlo?
intendo

Codice: Seleziona tutto

void funzione(void)
{
}

int main(void)
{
  funzione();
}
aggiungi qualcosa a questo scheletro e vedi se compila...

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 »

quello che stiamo cercando di spiegarti è che main NON è una funzione qualunque, e lo "standard" vuole che ritorni un int! alle altre funzioni che crei tu puoi fare ritornare un po' quel che ti pare!

gastone90

Messaggio da gastone90 »

Zzt, tu intendi dire che la funzione principale main non può essere definita con un void? e che però le altre funzioni interne di un prog possono essere precedute da void? Io non penso, dato che comunque le funzioni, sia che siano principali o interne, hanno le stesse proprietà e sintassi. almeno io la penso così, ho cercato un po' su internet e sui libri che ho ma non ho trovato grandi spiegazioni.

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

Messaggio da TheSnowBoarder »

Secondo lo standard ISO C esistono soltanto due possibili
modi in cui poter dichiarare la funzione main:

int main(void)

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

e basta.
Malgrado esistano compilatori cazzoni per i quali qualsiasi forma
è buona, è sempre una buona abitudine attenersi agli standard
in modo da garantire il più possibile l'indipendenza del codice dalla
piattaforma e dal compilatore.

Un buon modo per imparare a scrivere codice C
è compilare i propri listati con le opzioni

-Wall -pedantic

e se neanche questo basta, aggiungete -ansi

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 »

ma hai letto quel che ho scritto io?

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

Messaggio da TheSnowBoarder »

useless ha scritto:ma hai letto quel che ho scritto io?
Si, cercavo solo di essere più convincente ;)

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 »

non dicevo a te :), hai perfettamente ragione, come tutti gli altri, ma quel che ha scritto gastone nel suo ultimo post è esattamente il contrario di quel che ho scritto io, dal che deduco non abbia letto! 8)

gastone90

Messaggio da gastone90 »

guarda che ho letto quello che hai scritto useless, ti stavo dicendo quello che avevo capito io su questa storia sulle funzioni. grazie, finalmente ho capito :-)

Rispondi