Typedef et #include [C] - C - Programmation
Marsh Posté le 13-03-2011 à 14:44:08
Et si tu fais int SEM_init(byte *shm); ça donne quoi?
A+,
Marsh Posté le 14-03-2011 à 09:20:17
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"...
Marsh Posté le 14-03-2011 à 10:37:17
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+,
Marsh Posté le 14-03-2011 à 11:04:29
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...
Marsh Posté le 16-03-2011 à 00:07:08
Coucou et merci de vos réponses !
Mon problème s'est reglé en mettant mes typedef dans un fichier header !
Marsh Posté le 13-03-2011 à 12:42:01
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 :
Je définis 2 types.
Lors de la compilation, j'ai :
Ligne 22 :
Il ne trouve donc pas mon typedef qui est dans serveur.h
J'ai beau cherché, impossible à résoudre... Quel est mon probleme ?