Preprocessing & dereferencing pointer - C - Programmation
Marsh Posté le 23-02-2010 à 19:25:45
- l'emplacement où est défini une macro importe peu tant qu'elle est définie avant son utilisation
- pour pouvoir déréférencer un pointeur (appliquer les opérateurs -> ou *), il faut que le type pointé soit complet, donc ne pas avoir uniquement une déclaration mais bien une définition
Code :
|
Marsh Posté le 13-03-2010 à 04:20:08
J'avais oublié de mettre la notification e-mail pour ce topic.
Merci de ta réponse
J'ai changé le code des structures, et en effet un "typedef" fait quelques merveilles..
Marsh Posté le 23-02-2010 à 18:26:29
Bonjour à tous!
J'ai une question sur un point qui me pose problème lors de la compilation;
J'utilise des macros dans mon code C, dont par exemple:
#define MACRO(var) (((var)->toto) >> 4) *23 (renvoi un type int)
Cette macro est définie dans une structure, STRUCT;
Dans mon code j'ai:
STRUCT* _struct;
rep = MACRO(_struct);
Lorsque la structure (comprenant cette macro) est directement dans le fichier .c, la compilation ne pose pas de problème;
En revanche, lorsque j'externalise cette structure dans un fichier .h, j'ai une erreur à la compil : "dereferencing pointer to incomplete type"
Et je ne comprends pas pourquoi ... ?????
Des idées ?
Merci d'avance