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

  FORUM HardWare.fr
  Programmation
  C

  [C] Typedef et #include

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Typedef et #include

n°2062958
apaachee
Posté le 13-03-2011 à 12:42:01  profilanswer
 

Bonjour à tous !
 
Je vous explique, j'ai 6 fichiers :
 
serveur.h => #include "shm.h"
              => #include "sem.h
serveur.c =>#include "serveur.h"
 
 
shm.h  =>#include "serveur.h"
shm.c =>#include "shm.h"
 
sem.h =>#include "serveur.h"
sem.c  =>#include "sem.h"
 
J'ai donc deux doubles-inclusions.
 
Dans mon serveur.h j'ai :  

Code :
  1. typedef char byte;
  2. typedef mem...


 
Je définis 2 types.
 
Lors de la compilation, j'ai :  
 

Code :
  1. gcc     -o shm.o -Wall -O3 -c  shm.c
  2. In file included from serveur.h:5,
  3.                  from shm.h:8,
  4.                  from shm.c:3:
  5. sem.h:22: error: expected ‘)’ before ‘*’ token


 
Ligne 22 :  

Code :
  1. int SEM_init(byte* shm);


 
Il ne trouve donc pas mon typedef qui est dans serveur.h
 
J'ai beau cherché, impossible à résoudre... Quel est mon probleme ?

mood
Publicité
Posté le 13-03-2011 à 12:42:01  profilanswer
 

n°2062983
gilou
Modérateur
Modzilla
Posté le 13-03-2011 à 14:44:08  profilanswer
 

Et si tu fais int SEM_init(byte *shm); ça donne quoi?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2063116
shaoyin
Posté le 14-03-2011 à 09:20:17  profilanswer
 

Si tes doubles inclusions sont dues à tes deux "typedef", tu devrais peut-être déporter ces derniers dans un autre fichier header.
 
Le problème, à mon avis, est que tu mélanges plusieurs notions : la notion de "byte" est-elle propre à la notion de "serveur" ? Je ne pense pas, donc la définition du "byte" n'a rien à faire dans ce fichier. Idem pour "mem"...

n°2063150
gilou
Modérateur
Modzilla
Posté le 14-03-2011 à 10:37:17  profilanswer
 

Les doubles triples ou autres inclusions, si c'est bien fait, ça pose pas de pb.
Je suppose qu'il utilise la technique standard style
#ifdef  __SHM_H__
#else
#define __SHM_H__
 /* le contenu de son shm.h */
#endif
parce que si c'est pas le cas, faut aimer vivre dangereusement.
Pour diagnostiquer son pb, faudrait voir un peu plus son code (au moins jusqu'a la ligne 22 quoi)
A+,


Message édité par gilou le 14-03-2011 à 10:39:02

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2063170
shaoyin
Posté le 14-03-2011 à 11:04:29  profilanswer
 

Je suis d'accord sur le fait que les #ifdef .. #define .. #endif sont incontournables dans les headers, mais ca ne dispense pas de faire les choses dans les règles de l'art et de répartir le code proprement dans les fichiers. Ca ne peut que faire gagner du temps pour la compréhension ( et accessoirement pour la compilation ).
 
Sinon, +1 pour avoir un peu plus de code , parce que là, c'est un peu léger...

n°2063903
apaachee
Posté le 16-03-2011 à 00:07:08  profilanswer
 

Coucou et merci de vos réponses !
 
Mon problème s'est reglé en mettant mes typedef dans un fichier header !


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

  [C] Typedef et #include

 

Sujets relatifs
Problème NetworkStream C#adapté la taille d'un div contenant un include a sa page "appelée"
[ C#] Initialisation attributC++ FILE SOURCE NOT COMPILED
lien api windows en langage C[C#.NET] expressions régulières
[Batch] Rechercher des fichiers dans C:[C++] erreur : no matching function for call
Probléme language Ccross compil C Ubuntu vers Autres (SUN, HP, AIX...)
Plus de sujets relatifs à : [C] Typedef et #include


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