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 :

Erreur que je n'arrive pas à corriger


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 179
    Par défaut Erreur que je n'arrive pas à corriger
    Bonjour,

    dans mon programme, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    raytrace.c: In function ‘makeCylinder’:
    raytrace.c:49: erreur: syntax error before ‘)’ token
    La fonction en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cylinder* makeCylinder(GLfloat x, GLfloat y, GLfloat z, GLfloat r) {
      cylinder* cylinder;
      /* allocate memory */
      cylinder = (cylinder*) malloc(sizeof(cylinder));
     
      /* put stuff in it */
      cylinder->c = makePoint(x,y,z,1.0);   /* center */
      cylinder->r = r;   /* radius */
      cylinder->m = NULL;   /* material */
      return(cylinder);
    }
    Je ne vois pas très bien ou se situe l'erreur.
    Quelqu'un pourrait-il m'indiquer ou se situe l'erreur.

    Merci

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par parano
    Bonjour,

    dans mon programme, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    raytrace.c: In function ‘makeCylinder’:
    raytrace.c:49: erreur: syntax error before ‘)’ token
    Quelle est la ligne 49 ?

    Sinon, les definitions de cylinder et GLfloat sont-elles bien visibles ? Tout les headers sont-ils bien inclus ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Dans un premier temps, je confirme le fait, implicitement dit, que ce genre d'erreur peut etre la consequence d'un erreur silencieuse, dans la definition par exemple.

    Sinon juste a titre de curiosité,
    cylinder* cylinder;
    , ton nom de variable est le meme que ton type ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 179
    Par défaut
    Citation Envoyé par TabrisLeFol
    Dans un premier temps, je confirme le fait, implicitement dit, que ce genre d'erreur peut etre la consequence d'un erreur silencieuse, dans la definition par exemple.

    Sinon juste a titre de curiosité,
    , ton nom de variable est le meme que ton type ?
    Le probleme venait de là.
    Mais pourquoi ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Le compilateur definit variables et types par leur nom, et ne se sert pas du contexte pour les differencier, mais meme avec le contexte, ton malloc est ambigu.

    Moi j'aurais fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    malloc(sizeof(*cylinder));
    Pour dire le type pointé par le pointeur.

    Mais on pourrait egalement reserver de la taille, seulement pour le pointeur... (type = void*)

    Si jamais tu ne sais pas comment l'appeler, tu peux toujours prefixé ta variable par p pour expliciter que c'est un pointeur.

    EDIT : Avec struct cylinder cylinder, par definition ce qui suit le struct est le nom d'un structure, il n'y a donc dans ce cas pas de probleme.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 179
    Par défaut
    Merci pour les précisions

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par parano
    La fonction en question :
    En dehors de ce qui a déjà été signalé :
    • un cast inutile
    • il manque le test de la valeur retournée par malloc()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    cylinder* makeCylinder(GLfloat x, GLfloat y, GLfloat z, GLfloat r) 
    {
       cylinder* p_cylinder = malloc (sizeof *p_cylinder);
       if (p_cylinder != NULL)
       {
           /* put stuff in it */
           p_cylinder->c = makePoint (x, y, z, 1);   /* center */
           p_cylinder->r = r;   /* radius */
           p_cylinder->m = NULL;   /* material */
       }
        return cylinder;
    }
    L'utilisateur doit stocker l'adresse retournée dans un pointeur, tester sa validité et libérer le bloc pointé après usage. ('destructeur' recommandé)

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

Discussions similaires

  1. Erreurs dans mes tables que je n'arrive pas à corriger
    Par simondu43 dans le forum Débuter
    Réponses: 2
    Dernier message: 18/05/2009, 22h03
  2. Erreur dans mon programme que je n'arrive pas à corriger
    Par alex7443 dans le forum Débuter
    Réponses: 3
    Dernier message: 25/03/2009, 14h46
  3. Message d'erreur que je n'arrive pas à résoudre
    Par MAMIKA dans le forum MATLAB
    Réponses: 5
    Dernier message: 15/09/2008, 13h17
  4. erreur que je n'arrive pas a trouver
    Par will Igetit dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/09/2008, 19h11
  5. Réponses: 12
    Dernier message: 11/04/2006, 17h36

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