IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

main ne renvoie plus de int ?


Sujet :

C

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Points : 76
    Points
    76
    Par défaut main ne renvoie plus de int ?
    Bonjour tout le monde

    voulant tester les structures je fait un petit programme (une sorte d'agenda à venir)dont voici le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #include <stdio.h>
    #include "personne.h"
     
    int main()
     
    {
     
    int i  ,nombreJoueurs ;
     
    coordonneesJoueurs joueur[100];
     
    printf("veuillez déclarer le nombre de joueur");
    scanf("%d",&nombreJoueurs);
     
    for (i=0 ; i<nombreJoueurs ; i++)
    {
     printf("veuillez saisir le nom et le prénom");
     scanf("%s%s",joueur[i].nom,joueur[i].prenom);
     }
     
     for (i=0 ; i<nombreJoueurs ; i++)
     
      printf("voici les coordonées du joueur n %d : %s %s",i,joueur[i].nom,joueur[i].prenom);
     
    return 0;  
     
    }
    et voici le code de personne.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct coordonneesJoueurs coordonneesJoueurs;
     
    struct coordonneesJoueurs
     
    {
    	char nom[21] , prenom[21];
    	int  numeroTel , age , sexe  ;//sexe est ooléen : 1 = garçon, 0 = fille
    }
    pouvez m'aider s.v.p car j'ai le même bogue en compilation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    abdel@ubuntu:~/dev-c/structure$ gcc -o structure_tableau structure_tableau.c
    structure_tableau.c:4: erreur: two or more data types in declaration specifiers
    structure_tableau.c: In function ‘main’:
    structure_tableau.c:25: erreur: incompatible types in return
    structure_tableau.c:6: attention : return type of ‘main’ is notint
    je n'y comprend plus grand chose,merci d'avance.

  2. #2
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Points : 21
    Points
    21
    Par défaut
    il te faut mettre un ; apres l'accolade fermante de ta structure

  3. #3
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct coordonneesJoueurs
    {
    	char nom[21] , prenom[21];
    	int  numeroTel , age , sexe  ;//sexe est ooléen : 1 = garçon, 0 = fille
    };
    Point-virgule! Ton compilateur te dis que ton main ne retourne pas un int pas que main ne doit pas retourner un int.

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Points : 76
    Points
    76
    Par défaut
    le code est un peu chamboulé (absence de \n) mais ça marche merci pour ton aide.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    "Return type of main() is not int" est un très bon example de message ambigu.
    Pour moi, ce genre de message devrait dire "Return type of main() shall be int", comme ça on sait du premier coup d'oeil si le message indique la règle enfreinte ou la mauvaise valeur...

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Points : 76
    Points
    76
    Par défaut
    bonjour

    merci tout le monde pour vos réponses,je suis d'accord avec Médinoc du fait que gcc renvoie des messages d'alerte qui ne sont pas toujours concret ou du moins clairs.

    ça serait super si le compilateur pouvait nous montrer l'erreur du doigt

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par abdelilah Voir le message
    merci tout le monde pour vos réponses,je suis d'accord avec Médinoc du fait que gcc renvoie des messages d'alerte qui ne sont pas toujours concret ou du moins clairs.

    ça serait super si le compilateur pouvait nous montrer l'erreur du doigt
    C'est pourtant exactement ce qu'il fait. Il te dit que main() a plus d'un type retour défini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    structure_tableau.c
    structure_tableau.c:4: erreur: two or more data types in declaration specifiers
    structure_tableau.c: In function ‘main’:
    structure_tableau.c:25: erreur: incompatible types in return
    structure_tableau.c:6: attention : return type of ‘main’ is notint
    c'est donc qu'il y a quelque chose avant qui le perturbe. Si ce 'quelque chose' n'est pas visible dans le fichier courant, c'est qu'il faut chercher dans ce qui n'est pas visible, par exemple dans un fichier inclus. Il faut donc commencer par vérifier le fichier qui est inclus juste avant le main() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include <stdio.h>
    #include "personne.h"
     
    int main()
     
    {
    soit : "personne.h" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    typedef struct coordonneesJoueurs coordonneesJoueurs;
     
    struct coordonneesJoueurs
     
    {
    	char nom[21] , prenom[21];
    	int  numeroTel , age , sexe  ;//sexe est ooléen : 1 = garçon, 0 = fille
    }
    et là, miracle : il manque un ';' qui fait croire au compilateur que main() a le type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct coordonneesJoueurs int main()
    ce qui n'est pas possible (il ne peut y avoir plus d'un type pour le même objet ou retour de fonction).

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    "Return type of main() is not int" est un très bon example de message ambigu.
    Pour moi, ce genre de message devrait dire "Return type of main() shall be int", comme ça on sait du premier coup d'oeil si le message indique la règle enfreinte ou la mauvaise valeur...
    en fait d'ailleurs (oui oui je pinaille pour une fois c'est moi )

    sans doute "Return type of main() should / must be int"

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    en fait d'ailleurs (oui oui je pinaille pour une fois c'est moi )

    sans doute "Return type of main() should / must be int"
    Dans la norme, 'shall' a un sens bien précis, proche de 'must'.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. (netbeans) main() ne marche plus sous forme d'un test JUnit
    Par olivier57b dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 25/11/2009, 15h12
  2. Réponses: 6
    Dernier message: 20/01/2009, 15h17
  3. le plus grand int
    Par beLz dans le forum Débuter
    Réponses: 2
    Dernier message: 20/07/2007, 13h41
  4. [XmlHttpRequest] - Asynchrone ne renvoie plus rien ??
    Par jacquesh dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 28/02/2006, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo