Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1071 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Dev C++ : 'main' must return 'int'

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Dev C++ : 'main' must return 'int'

n°1475406
cybertom87
Posté le 14-11-2006 à 20:03:31  profilanswer
 

Pourquoi Dev C++ refuse-t-il que je compile mon programme avec un void main() ?
Il m'affiche : " 'main' must return 'int' "
 
En effet, j'ai écrit un autre programme juste avant celui-ci, avec un void main() également, mais Dev C++ ne m'indiquait alors lors de la compilation que :
"[Warning] return type of 'main' is not 'int' "
 
étrange ...

mood
Publicité
Posté le 14-11-2006 à 20:03:31  profilanswer
 

n°1475408
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-11-2006 à 20:05:52  profilanswer
 

cybertom87 a écrit :

Pourquoi Dev C++ refuse-t-il que je compile mon programme avec un void main() ?
Il m'affiche : " 'main' must return 'int' "
 
En effet, j'ai écrit un autre programme juste avant celui-ci, avec un void main() également, mais Dev C++ ne m'indiquait alors lors de la compilation que :
"[Warning] return type of 'main' is not 'int' "
 
étrange ...


Tu as peut être durci tes options de compilations, ou alors, tu compiles en C++ (extension .cpp au lieu de .c ?)
 
De toutes façons main() retourne int, dans tous les cas. Alors respecte les règles et tout ira mieux.
 
http://mapage.noos.fr/emdel/notes.htm#typemain
 
EDIT : Hypothèse : Tu compiles en C99. Tu as dû changer quelque chose dans la configuration du compilateur.


Message édité par Emmanuel Delahaye le 15-11-2006 à 17:01:18

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1475470
cybertom87
Posté le 14-11-2006 à 22:18:52  profilanswer
 

J'ai commencé à lire quelques pages, fortes intéressantes, de ton site, et je n'utiliserai désormais plus que les écritures normalisées.
 
Cependant, pour mon problème, je n'ai ni durci les options de compilation, ni compilé en C++, et ma logique ne me permet pas de comprendre pourquoi le compilateur me refuse celui-ci alors qu'il acceptait l'autre ...
Quoiqu'il en soit, cela fonctionne avec int main().
 
Et pendant que j'ai quelqu'un de calé sous la main :
entre int main()  et   int main(void)
à part du coté de la norme, y a-t-il une différence ?

n°1475473
jesus_chri​st
votre nouveau dieu
Posté le 14-11-2006 à 22:21:53  profilanswer
 

pour la déclaration, () et (void) c'est différent. A la définition, non.
En C++, pas de différence dans les deux cas

n°1475787
big_dadi_f​at
Posté le 15-11-2006 à 13:33:12  profilanswer
 

des fois dans certain cours moi je trouve ma cette sentaxe :
main()
et d'autre cel-ci:
int main(void)
y a t'il une grane differance ?
 

n°1475797
_darkalt3_
Proctopathe
Posté le 15-11-2006 à 14:10:10  profilanswer
 

big_dadi_fat a écrit :

des fois dans certain cours moi je trouve ma cette sentaxe :
main()
et d'autre cel-ci:
int main(void)
y a t'il une grane differance ?


http://mapage.noos.fr/emdel/notes.htm#typemain
 
main DOIT retourner un entier, c'est la specif

n°1475806
big_dadi_f​at
Posté le 15-11-2006 à 14:29:19  profilanswer
 

_darkalt3_ a écrit :

http://mapage.noos.fr/emdel/notes.htm#typemain
main DOIT retourner un entier, c'est la specif


donc il faut suivre la norme ANSI ...
int main(void)
{
 
   return 0;
}

n°1475855
jesus_chri​st
votre nouveau dieu
Posté le 15-11-2006 à 15:03:08  profilanswer
 

big_dadi_fat a écrit :

des fois dans certain cours moi je trouve ma cette sentaxe :
main()
et d'autre cel-ci:
int main(void)
y a t'il une grane differance ?


 
en C, non
main n'est pas déclaré mais défini (qui fait une déclaration préalable de main() ? vu qu'on ne peut pas l'appeler soit-même...) et pour une définition ces deux écritures sont équivalente. Pas en C++ ou la 1ere est interdite

n°1475943
rocodido
Posté le 15-11-2006 à 16:36:11  profilanswer
 

le cr retourne 0 si ton prog s'est bien déroule sinon une erreur et donc différent de 0
 
si tu mets un return 0, c'est un peu domamge car tu geres pas les erreurs.

n°1475949
Elmoricq
Modérateur
Posté le 15-11-2006 à 16:49:54  profilanswer
 

jesus_christ a écrit :

pour une définition ces deux écritures sont équivalente.


 
En fait, lorsque le type de retour d'une fonction n'est pas précisé, le compilateur assume qu'il s'agit implicitement d'un int. Je crois que c'est dans la norme.
 
Disons donc que pour main() ça tombe bien, mais que c'est sale.
(il faut néanmoins vérifier ce que je suis en train d'avancer, parce que je n'en suis pas sûr)
 

rocodido a écrit :

le cr retourne 0 si ton prog s'est bien déroule sinon une erreur et donc différent de 0


 
Non, un programme retourne EXIT_SUCCESS en cas de succès, et EXIT_FAILURE sinon.
Il se trouve que sur Unix, 0 == succès. Ce n'est peut-être pas le cas sur tous les systèmes, d'où ces deux constantes définies dans stdlib.h

Message cité 1 fois
Message édité par Elmoricq le 15-11-2006 à 16:51:38
mood
Publicité
Posté le 15-11-2006 à 16:49:54  profilanswer
 

n°1475955
Emmanuel D​elahaye
C is a sharp tool
Posté le 15-11-2006 à 16:58:39  profilanswer
 

Elmoricq a écrit :

En fait, lorsque le type de retour d'une fonction n'est pas précisé, le compilateur assume qu'il s'agit implicitement d'un int. Je crois que c'est dans la norme.


En C K&R et C90, oui. En C99, c'est un bug. Le type est obligatoirement explicite.

Citation :

Non, un programme retourne EXIT_SUCCESS en cas de succès, et EXIT_FAILURE sinon.
Il se trouve que sur Unix, 0 == succès. Ce n'est peut-être pas le cas sur tous les systèmes, d'où ces deux constantes définies dans stdlib.h

La norme dit qu'un programme peut retourner 0 (main:return 0, exit (0)) et que ce 0 a la même sémantique de EXIT_SUCCESS.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1475959
Elmoricq
Modérateur
Posté le 15-11-2006 à 17:01:43  profilanswer
 

Merci pour ces corrections/précisions. [:romf]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Dev C++ : 'main' must return 'int'

 

Sujets relatifs
probleme avec return[BATCH] Besoin d'un coup de main pour créer un batch
Retour d'expérience sur la méthode de dév XP[Cherche] Dev php pour un coup de main (rémunéré)
[Résolu] [C#] String et SplitLancement de class Main
fonction et returnBug fonction find, the return
requete multiple PHP SQL : besoin coup de main urgent 
Plus de sujets relatifs à : Dev C++ : 'main' must return 'int'


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR