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

  FORUM HardWare.fr
  Programmation
  C

  error: erreur de syntaxe before numeric constant ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

error: erreur de syntaxe before numeric constant ???

n°1503588
Chacal2k
Utopies pendues haut et court.
Posté le 16-01-2007 à 12:38:30  profilanswer
 

Code :
  1. Monde Nouvel_habitant(Monde *Aire_de_jeu, Fliste *agent, point destination)
  2. {
  3. int X=destination->a;
  4. int Y=destination->b;
  5. if((*Aire_de_jeu).plateau[X][Y].fourmiliere==NULL && (*agent)->genre=='f')
  6. {
  7.  (*Aire_de_jeu).plateau[X][Y].fourmiliere=(*agent);
  8.  (*agent)->posx=X; (*agent)->posy=Y;
  9.  return (*Aire_de_jeu);
  10. }
  11. if((*Aire_de_jeu).plateau[X][Y].fourmiliere!=NULL && (*agent)->genre=='f')
  12. {
  13.  return (*Aire_de_jeu);
  14. }
  15. (*agent)->posx=X; (*agent)->posy=Y;
  16. if((*Aire_de_jeu).plateau[X][Y].habitants==NULL)
  17. {
  18.  (*agent)->vprec=(*agent)->vsuiv=NULL;
  19.  (*Aire_de_jeu).plateau[X][Y].habitants=*agent;
  20.  return (*Aire_de_jeu);
  21. }
  22. (*agent)->vsuiv=(*Aire_de_jeu).plateau[X][Y].habitants;
  23. (*Aire_de_jeu).plateau[X][Y].habitants->vprec=*agent;
  24. (*Aire_de_jeu).plateau[X][Y].habitants=*agent;
  25. (*Aire_de_jeu).plateau[X][Y].habitants->vprec=NULL;
  26. return (*Aire_de_jeu);
  27. }


Je ne comprends pas ou est le problème...

mood
Publicité
Posté le 16-01-2007 à 12:38:30  profilanswer
 

n°1503600
breizhbugs
Posté le 16-01-2007 à 13:02:27  profilanswer
 

Moi je comprends pas pourquoi tu nous a pas mis le numero de la ligne ou il y a un probleme... On ne connais meme pas tes structures de données!


Message édité par breizhbugs le 16-01-2007 à 13:04:26
n°1503852
Emmanuel D​elahaye
C is a sharp tool
Posté le 16-01-2007 à 19:17:36  profilanswer
 

Chacal2k a écrit :

Je ne comprends pas ou est le problème...


Quel problème ?


Project   : Forums
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\forums2\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c:1: error: syntax error before "Nouvel_habitant"
main.c:1: error: syntax error before '*' token
main.c:2: warning: return type defaults to `int'
main.c:2: warning: function declaration isn't a prototype
main.c: In function `Nouvel_habitant':
main.c:3: error: `destination' undeclared (first use in this function)
main.c:3: error: (Each undeclared identifier is reported only once
main.c:3: error: for each function it appears in.)
main.c:6: error: `Aire_de_jeu' undeclared (first use in this function)
main.c:6: error: `NULL' undeclared (first use in this function)
main.c:6: error: `agent' undeclared (first use in this function)
Process terminated with status 1 (0 minutes, 4 seconds)
8 errors, 2 warnings


---------------
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°1503854
Ace17
Posté le 16-01-2007 à 19:37:54  profilanswer
 

Je dirais, au feeling, que tu as du ecrire un truc du genre :
 
#define MACHIN = 42
 
edit apres la remarque d'ED : en gras

Message cité 1 fois
Message édité par Ace17 le 16-01-2007 à 20:02:48
n°1503855
Emmanuel D​elahaye
C is a sharp tool
Posté le 16-01-2007 à 19:41:46  profilanswer
 

Ace17 a écrit :

Je dirais, au feeling, un truc du genre :
 
#define MACHIN = 42


Un suppo et au lit...
 


---------------
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°1503856
Ace17
Posté le 16-01-2007 à 19:43:54  profilanswer
 

Emmanuel Delahaye a écrit :

Un suppo et au lit...


 :pt1cable: non mais ho! il nous balance un code plus qu'incomplet, il nous donne meme pas la ligne qui pose probleme... mais il se trouve que c'est une erreur courante chez les debutants d'ecrire #define TRUC = bidule;  ..... et cette erreur cause ce message. Donc ton suppo, tu sais ou tu peux te le mettre  [:itm]

n°1503860
Emmanuel D​elahaye
C is a sharp tool
Posté le 16-01-2007 à 19:53:17  profilanswer
 

Ace17 a écrit :

:pt1cable: non mais ho! il nous balance un code plus qu'incomplet, il nous donne meme pas la ligne qui pose probleme... mais il se trouve que c'est une erreur courante chez les debutants d'ecrire #define TRUC = bidule;  ..... et cette erreur cause ce message. Donc ton suppo, tu sais ou tu peux te le mettre  [:itm]


Ah, OK, je croyais que c'était la correction... bon, ben... Beark, c'est amer. Ah, c'est pas là que ça se met ?

 



Message édité par Emmanuel Delahaye le 16-01-2007 à 19:54:23

---------------
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°1503865
Ange_blond
Posté le 16-01-2007 à 20:09:42  profilanswer
 

en fait ça s'écrit  
#define TRUC bidulle
 
(pas de '=' )

n°1503867
0x90
Posté le 16-01-2007 à 20:11:56  profilanswer
 

On utilise pas #define pour les constantes :o


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1503874
Ace17
Posté le 16-01-2007 à 20:33:27  profilanswer
 

Dans la cat C, si

mood
Publicité
Posté le 16-01-2007 à 20:33:27  profilanswer
 

n°1503878
Emmanuel D​elahaye
C is a sharp tool
Posté le 16-01-2007 à 20:49:14  profilanswer
 

0x90 a écrit :

On utilise pas #define pour les constantes :o


Pourquoi pas ?
 
enum ne couvre pas tous les cas. int uniquement.


---------------
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°1503886
0x90
Posté le 16-01-2007 à 21:15:34  profilanswer
 

Emmanuel Delahaye a écrit :

Pourquoi pas ?
 
enum ne couvre pas tous les cas. int uniquement.


 
Je pensais pas aux enums, je pensais aux const tout simplement. [:spamafote]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1503890
TheFox37
pourtant chez moi, ça marche
Posté le 16-01-2007 à 21:22:23  profilanswer
 

Emmanuel Delahaye a écrit :

Pourquoi pas ?
 
enum ne couvre pas tous les cas. int uniquement.


 
+1 pour les const.
 
#define pour une constante est un moyen crado de la définir. Je trouve que ça fait partie des sales habitudes.  
Ca coute rien de faire un const, et au moins c'est typé. Ca évite les lignes de code à reprendre si un jour tu portes ton code sur un langage plus évolué qui trouve que faire  
 

Code :
  1. #define ma_var_float 6.5
  2. float test;
  3. if(test == ma_var_float)


 
c'est comparer un torchon et une serviette


---------------
Mon FeedBack Ebay
n°1503892
Ace17
Posté le 16-01-2007 à 21:24:36  profilanswer
 

0x90 a écrit :

Je pensais pas aux enums, je pensais aux const tout simplement. [:spamafote]


 

Code :
  1. const int N = 10;
  2. int tab[N];


 
Voici ce que me repond gcc - ce comportement m'a toujours surpris :


error: variable-size type declared outside of any function

n°1503909
Sve@r
Posté le 16-01-2007 à 21:45:30  profilanswer
 

Chacal2k a écrit :

Code :
  1. Monde Nouvel_habitant(Monde *Aire_de_jeu, Fliste *agent, point destination)
  2. {
  3. int X=destination->a;
  4. int Y=destination->b;
  5. ...




Moi, quand je vois ça, je me dis que "point" est plus que certainement un type masquant un pointeur (combien masque-t-il d'étoile ? Mystère !!!) et rien que là j'hésite à lire la suite tant j'ai peur de ce que je vais découvrir...
 

Chacal2k a écrit :

Code :
  1. if((*Aire_de_jeu).plateau......



Encore une super intuition pour ne pas utiliser l'opérateur "->"  
 

Chacal2k a écrit :

Code :
  1. return (*Aire_de_jeu);



Ouais !!! Et vas-y que je te retourne une structure (ah moins que le type "Monde" masque lui-aussi une ou plusieurs étoiles...). Bon, j'arrête de décortiquer ce truc...
 

Chacal2k a écrit :

Je ne comprends pas où est le problème...


Principalement dans ta façon de coder. Masquer les étoiles c'est hyper sale parce que ça ne sert à rien (avec un peu d'habitude la manipulation de pointeurs simples devient triviale et les pointeurs doubles on s'en sort toujours assez bien quand aux pointeurs triples on arrive quasiment toujours à s'en passer). De plus, personne ne comprend les types que tu manipules (on a bien une idée mais pas de certitude) et c'est hyper facile de se tromper ensuite. Et je suis presque sûr que t'es pas capable toi-même de relire ce code (d'ailleurs si tu nous l'as apporté...).


Message édité par Sve@r le 16-01-2007 à 21:52:45

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1503919
Emmanuel D​elahaye
C is a sharp tool
Posté le 16-01-2007 à 22:15:24  profilanswer
 

0x90 a écrit :

Je pensais pas aux enums, je pensais aux const tout simplement. [:spamafote]


Gné ?  :ouch:  :ouch:  :ouch: Quel rapport avec les expressions constantes ?
 


---------------
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°1503920
Emmanuel D​elahaye
C is a sharp tool
Posté le 16-01-2007 à 22:19:07  profilanswer
 

TheFox37 a écrit :

#define pour une constante est un moyen crado de la définir. Je trouve que ça fait partie des sales habitudes.


Bof, je ne vois pas pourquoi. Affirmation gratuite.

Citation :


Ca coute rien de faire un const, et au moins c'est typé. Ca évite les lignes de code à reprendre si un jour tu portes ton code sur un langage plus évolué qui trouve que faire  
 

Code :
  1. #define ma_var_float 6.5
  2. float test;
  3. if(test == ma_var_float)


 
c'est comparer un torchon et une serviette

Tu penses qu'un define n'est pas typé ? Alors apprend à l'utiliser correctement avant de critiquer :  

Code :
  1. #define ma_var_float 6.5f
  2. float test;
  3. if(test == ma_var_float)


 
"Il n'y a pas de mauvais langages, il n'y a que de mauvais codeurs"


---------------
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°1503921
Emmanuel D​elahaye
C is a sharp tool
Posté le 16-01-2007 à 22:20:19  profilanswer
 

Ace17 a écrit :

Code :
  1. const int N = 10;
  2. int tab[N];


 
Voici ce que me repond gcc - ce comportement m'a toujours surpris :


error: variable-size type declared outside of any function



Ben oui. Faut pas confondre expression constante et variable à lecture seule. Rien à voir. Ouvrez vos livres de C...
 


---------------
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°1503937
++fab
victime du syndrome IH
Posté le 16-01-2007 à 23:04:45  profilanswer
 

Emmanuel Delahaye a écrit :

Ben oui. Faut pas confondre expression constante et variable à lecture seule. Rien à voir. Ouvrez vos livres de C...

 
Ah bon.
J'ai plutôt l'impression que le problème ici est que le VM-type (gcc dit le variable-size type) n'est pas déclaré dans un block ou dans une fonction - ce que requiert la norme C99.
 
 

n°1503945
Emmanuel D​elahaye
C is a sharp tool
Posté le 16-01-2007 à 23:17:02  profilanswer
 

++fab a écrit :

Ah bon.
J'ai plutôt l'impression que le problème ici est que le VM-type (gcc dit le variable-size type) n'est pas déclaré dans un block ou dans une fonction - ce que requiert la norme C99.


Rien à voir. C'est un problème de VLA, pas de const.
 


---------------
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°1503948
++fab
victime du syndrome IH
Posté le 16-01-2007 à 23:20:04  profilanswer
 

Oui, ton explication n'avait rien à voir. Le problème d'Ace17 est en rapport avec les VLA, pas avec const. (je referme mon livre de C)

n°1503995
0x90
Posté le 17-01-2007 à 09:03:51  profilanswer
 

Emmanuel Delahaye a écrit :

Ben oui. Faut pas confondre expression constante et variable à lecture seule. Rien à voir. Ouvrez vos livres de C...


 
Ben ooops... comme on dit [:cupra]
 
En fait je met tellement peu en global que je me suis jamais pris le problème susmentionné (enfin si j'ai des constantes parfois, mais pas pour déclarer d'autres tableaux en global quoi).
Je vais effectivement aller relire mon bouquin de C y'a un truc que j'ai du louper.
Et si je préfer(ais) les const int ou const size_t c'est parce qu'il me semblait que ça permettait au debugger d'être plus clair (sauf en -g3 ou gcc retient aussi les macros).


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
mood
Publicité
Posté le   profilanswer
 


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

  error: erreur de syntaxe before numeric constant ???

 

Sujets relatifs
conception base de donnees +erreur (errno: 121)Erreur de hauteur : input dans div
Requete ne retournant aucune erreur mais pas executée ???!!!!Erreur d'exécution '6' : dépassement de capacité
Erreur de compilationsyntaxe C++ que je ne comprends pas
Asp.Net Erreur 302 "Object Moved Here"Classes, fonctions, comment décrire leur syntaxe ?
[Ruby On Rails] [Resolu] Routing error[ASM]erreur de compilation (debutant)
Plus de sujets relatifs à : error: erreur de syntaxe before numeric constant ???


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