Que signifie cette erreur: “erreur: liste de qualificateur de qualificateur attendue avant 'nom_type' '?

StackOverflow https://stackoverflow.com/questions/608175

  •  03-07-2019
  •  | 
  •  

Question

Je travaille sur le processeur Cell et j'essaie de créer une structure qui contiendra un spe_context_ptr_t , qui sera utilisée dans le thread pour lancer un contexte spe et qui contiendra également un pointeur vers quelque chose d'autre qui sera passé au contexte spu depuis le fil (actuellement, j'essaye d'en faire un pointeur générique, mais ce sera en réalité un pointeur sur une autre structure que j'ai définie). Lorsque j'essaie de compiler, j'obtiens le message d'erreur suivant:

spu/../common.h:38: error: expected specifier-qualifier-list before 'spe_context_ptr_t'

// here is the offending line(s)

typedef struct _PTHREAD_BLOCK {
    spe_context_ptr_t * context; // Error happens here
    uintptr32_t  args; 
 } PTHREAD_BLOCK;
Était-ce utile?

La solution

Le compilateur ne sait pas que spe_context_ptr_t est un type. Vérifiez que le typedef approprié est dans la portée lorsque ce code est compilé. Vous avez peut-être oublié d'inclure le fichier d'en-tête approprié.

Autres conseils

J'ai eu le même message d'erreur mais la solution est différente.

Le compilateur analyse le fichier de haut en bas.

Assurez-vous qu’une structure est définie AVANT de l’utiliser dans une autre:

typedef struct
{
    char name[50];
    wheel_t wheels[4]; //wrong, wheel_t is not defined yet
} car_t;

typedef struct
{
    int weight;
} wheel_t;

Pour les projets iPhone cacao-touch:

J'ai eu ce problème et, grâce au commentaire d'Eric Farraro, j'ai pu le résoudre. J'importais une classe WSHelper.h dans beaucoup de mes autres classes. Mais j'importais aussi certaines de ces classes dans mon WSHelper.h (circulaire comme le disait Eric). Donc, pour résoudre ce problème, j'ai déplacé les importations de mon fichier WSHelper.h vers mon fichier WSHelper.m car elles n'étaient de toute façon pas nécessaires dans le fichier .h.

Je l'ai eu avec une boucle d'importation:

---FILE B.h
#import "A.h"
@interface B{
  A *a;
}
@end

---FILE A.h
#import "B.h"
@interface A{      
}
@end

Vous devez nommer votre structure ainsi:

typedef struct car_t {

   char

   wheel_t

} car_t;

J'ai pu résoudre ce problème en utilisant le correctif de Gorgando, mais au lieu de déplacer les importations, je les ai commentées individuellement, j'ai construit l'application, puis modifié en conséquence jusqu'à ce que je m'en débarrasse.

@simpleBob

---FILE B.h
#import "A.h"
@interface B{
  A *a;
}
@end

---FILE A.h

@class B;

@interface A{      
}
@end
Le code ci-dessus m'a aidé à résoudre le problème. Quelqu'un pourrait-il expliquer ce qui se passe ici?

cette erreur survient généralement lorsque vous utilisez l'objet avant de l'utiliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top