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.
gastone90

PROBLEMI IN C++ CON IL VOID

Messaggio da gastone90 »

Ciao, sono un mega-principiante in c++, ed ho un problema dal quale non riesco a venirne fuori: quando cerco di fare una funzione void, durante la compilazione c'è un errore :"main must return 'int'". per chiarire meglio:

#include <iostream.h>
void main()
{
cout << "ciao";
}

Ho provato ad usare sia Kdevelop che Anjuta, e l'errore è sempre lo stesso. quidi penso che sia una cosa che dipende dal compilatore gcc. aspetto consigli (e magari qualche soluzione ;-)). grazie.

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

Messaggio da zzt »

Io non conosco il c++, ma è posibile che
"main must return 'int'"
e quindi devi far tornare un int al main...
poi, eventualmete, richiama una altra funzione che torna void...

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:

Re: PROBLEMI IN C++ CON IL VOID

Messaggio da absinthe »

gastone90 ha scritto:Ciao, sono un mega-principiante in c++, ed ho un problema dal quale non riesco a venirne fuori: quando cerco di fare una funzione void, durante la compilazione c'è un errore :"main must return 'int'". per chiarire meglio:

#include <iostream.h>
void main()
{
cout << "ciao";
}

Ho provato ad usare sia Kdevelop che Anjuta, e l'errore è sempre lo stesso. quidi penso che sia una cosa che dipende dal compilatore gcc. aspetto consigli (e magari qualche soluzione ;-)). grazie.
esiste una ed una sola definizione di main:

int main (int argc, char** argv)
{
//blablabla

return 1;
}

NB ritorna pure quello che ti serve return 1 è solo un esempio.
l'errore del compilatore è dovuto al fatto che non esiste una definizione del main del tipo

void main ();

ciaux,
M.

gastone90

Messaggio da gastone90 »

Lo penso anch'io... ma come si fa?

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:Lo penso anch'io... ma come si fa?
come si fa cosa..?

cioè se vuoi scrivere ciao allra il codice è questo:

#include "iostream"

int main (int argc, char** argv)
{
cout << "ciao!"

return 1;
}

gastone90

Messaggio da gastone90 »

Ma io sul sito: http://freeweb.supereva.com/programmarein/c/c.htm?p
avevo trovato questo programma d'esempio:

#include <iostream>
using namespace std;
void main()
{
char c = 0;
while(c != 'x')
{
cout << "Inserisci un carattere (x per uscire) e premi invio: ";
cin >> c;
cout << "Hai inserito il carattere: " << c << endl;
}
}


che mi da l'errore main must return 'int' . BOOOO.......

Avatar utente
diego
Linux 2.x
Linux 2.x
Messaggi: 333
Iscritto il: ven 1 apr 2005, 0:00

Messaggio da diego »

curiosita': il file ha estensione .c o .cc?

gastone90

Messaggio da gastone90 »

è scritto in c++... almeno credo. in c si può fare quel prog?

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:è scritto in c++... almeno credo. in c si può fare quel prog?
no l' iostream è una libreria c++.

vedi in ansi esiste solo la definizione main che ti ho dato io. poi può accadere che non te ne fai una mazza del valore di ritorno o del parsing della riga di comando (insomma gli argomanti tra parentesi) allora alcuni compilatori sono + permissivi e se ne fregano di ciò che è ansi, accettando altri tipi di main.
evidentemente il gcc no! è duro & puro :) [OH! ma guarda che per compilare il c++ ci vuole il g++ non il gcc che fa solo c!]

tra l'altro è vero: se l'ide o chi per lui vbuole una certa estensione per il file, piuttostoche un'altra okkio!

comunque l'errore di compilazione per adesso è limitato alla definizione/dichiarazione del main che discordano...

M.

Avatar utente
diego
Linux 2.x
Linux 2.x
Messaggi: 333
Iscritto il: ven 1 apr 2005, 0:00

Messaggio da diego »

no mi riferivo all'estensione del file, ho visto che se dai in pasto a gcc un file .c o .cc non e' la stessa cosa ... vado un po' a memoria

Avatar utente
diego
Linux 2.x
Linux 2.x
Messaggi: 333
Iscritto il: ven 1 apr 2005, 0:00

Messaggio da diego »

come non detto non centra niente

1.cc:3: error: `main' must return `int'
1.cc: In function `int main(...)':

credo che sia anche corretto mettere int perche'
il return 0 alla fine vuol dire che il programma ha terminato ok

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio da Paoletta »

Ho provato ad usare sia Kdevelop che Anjuta, e l'errore è sempre lo stesso. quidi penso che sia una cosa che dipende dal compilatore gcc
sì, è una fissa del gcc...metti
return 0;

alla fine del main; oppure passa a g++,dovrebbe essere migliore per quanto riguarda il c++

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio da Paoletta »

ovviamente il main deve restituire un int
quindi:

int main (int argc, char** argv)

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 »

mentre il tipo di ritorno è int e basta, credo che sia perfettamente lecito usare void come parametro, qualora non ci curiamo di questi, o almeno non ho mai visto nessun warning in merito.

comunque il gcc quando compila file cc fa porcate, usa g++ x compilare programmi c++, come diceva paoletta.
se lo vuoi fare in c, usa printf.

gastone90

Messaggio da gastone90 »

Ho slackware 10.1, sapete mica se il compilatore g++ è già compreso? (ho fatto l'installazione completa).grazie scusate la mia ignoranza...

(Un altra cosa che non c'entra niente. perchè sotto il disegno del pinguino che ho qui come logo in slacky c'è scritto windows? Io nemmeno ce l'ho windows!! come si fa a cambiarla?)

Rispondi