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

  FORUM HardWare.fr
  Programmation
  C

  Preprocessing & dereferencing pointer

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Preprocessing & dereferencing pointer

n°1968642
Profil sup​primé
Posté le 23-02-2010 à 18:26:29  answer
 

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

mood
Publicité
Posté le 23-02-2010 à 18:26:29  profilanswer
 

n°1968680
Un Program​meur
Posté le 23-02-2010 à 19:25:45  profilanswer
 

- 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 :
  1. struct s; /* declaration de struct s */
  2. struct s {
  3.    int m;
  4. }; /* définition de struct s */


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1973446
Profil sup​primé
Posté le 13-03-2010 à 04:20:08  answer
 

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..


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

  Preprocessing & dereferencing pointer

 

Sujets relatifs
Fonctionnement du Frame Pointer 68kPourquoi ne pas pointer vers un élément courant dans une liste chainée
passing argument 1 of «NomFonction» from incompatible pointer typepréprocessing en php ???
Segmentation fault et make pointer from interger without a castAssignment makes pointer from integer without a cast...
RESOLU warning: assignment makes integer from pointer without a castpointer une cellule exel vers une autre
Pointer vers une WinForm (.NET Framework 2)tester si un element d'un ArrayList est nul sans lever de null pointer
Plus de sujets relatifs à : Preprocessing & dereferencing pointer


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)