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

  FORUM HardWare.fr
  Programmation
  C

  C: probleme de compil sur un typede => ferror: syntax error before ''

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C: probleme de compil sur un typede => ferror: syntax error before ''

n°2246286
lebron54
Posté le 16-12-2014 à 23:32:08  profilanswer
 

Bonjour
j'ai une erreur de compilation que je n'arrive pas à résoudre avec l'utilisation d'un typedef
l'erreur est la suivante : main.h:6: error: syntax error before 'titi'
 
 
voilà les 4 fichiers que j'utilise :
 
le main.c

Code :
  1. #include "main.h"
  2. int main (void)
  3. {
  4.     toto tata = 0;
  5.     func (tata);
  6.     return 0;
  7. }
  8. int func(toto titi)
  9. {
  10.     return 0; 
  11. }


 
avec son .h

Code :
  1. #ifndef _MAIN_H_
  2. #define _MAIN_H_
  3. #include "lib.h"
  4. int func(toto titi);
  5. #endif


 
puis une librairie "lib.c" dans laquelle je créer le typedef

Code :
  1. #include "lib.h"
  2. blablabla .....


 
avec son .h

Code :
  1. #ifndef _LIB_H_
  2. #define _LIB_H_
  3. #include "main.h"
  4. typedef unsigned int toto;
  5. #endif


 
je pense qu'il y a un problème avec les 2 .h qui s'appellent, mais je ne sais pas comment le résoudre
 
Merci d'avance

mood
Publicité
Posté le 16-12-2014 à 23:32:08  profilanswer
 

n°2246300
OrcusZ
Pro AMD | .Net lover
Posté le 17-12-2014 à 08:21:11  profilanswer
 

Bonjour,
 
Cette erreur viens du faite que Toto n'est pas reconnu en tant que type dans ton main.
 
Tu doit appeler le .h ou se trouve  
 

Code :
  1. typedef unsigned int toto;


 
dans ton main et pas l'inverse.


---------------
Made you your own sentence without believing that of the others...
n°2246319
dreameddea​th
Posté le 17-12-2014 à 10:46:01  profilanswer
 

Il y a un autre type de problème dans ton "architecture" : c'est include croisé :
- le main.h include le lib.h
- le lib.h include le main.h
 
C'est un vrai souci sur le long terme. La protection avec le #ifndef #define #endif est là pour gérer le problème d'ordre d'import et non de gérer des includes croisés.
 
Le main.h doit includer tous les .h mais les libXXX.h ne le doivent pas car c'est bien l'application qui est un assemblage de module mais les modules ne doivent pas "résupposer" le fonctionnement applicatif global
 
Donc ton lib.h NE DOIT PAS faire d'include de main.h
 

n°2246344
gilou
Modérateur
Modzilla
Posté le 17-12-2014 à 14:22:20  profilanswer
 

Vu qu'on n'est plus à l'age de pierre, plutôt que les
#ifndef XXX
#define XXX
...
#endif
les compilos modernes supportent la directive
#pragma once
http://en.wikipedia.org/wiki/Pragma_once
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

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

  C: probleme de compil sur un typede => ferror: syntax error before ''

 

Sujets relatifs
Problème mise à jour des entity JPA /glassfishCommande Oracle PROMPT / ACCEPT dans une appli console C#
Problème Script sql developer OracleProbleme avec FMODex en C pour lecture de .wav/.mp3
Structuration de programme en C#probleme sur une macro
Problème sur la table de hashageprobleme d'encodage utf8 avec notepad++
probleme avec la fin de la ligne 
Plus de sujets relatifs à : C: probleme de compil sur un typede => ferror: syntax error before ''


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