Che cosa significa questo errore: "errore: specificatore-qualificatore-elenco previsto prima di 'tipo_nome'"?

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

  •  03-07-2019
  •  | 
  •  

Domanda

Ho lavorato sul processore Cell e sto cercando di creare una struttura che conterrà un spe_context_ptr_t , che verrà utilizzato all'interno del thread per avviare un contesto spe e manterrà anche un puntatore a qualcos'altro che verrà passato al contesto spu dall'interno del thread (attualmente sto cercando di renderlo solo un puntatore generico, ma in realtà sarà un puntatore a un'altra struttura che ho definito). Quando provo a compilare, ottengo il seguente errore:

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;
È stato utile?

Soluzione

Il compilatore non sa che spe_context_ptr_t è un tipo. Verificare che il typedef appropriato sia compreso nell'ambito della compilazione di questo codice. Potresti aver dimenticato di includere il file di intestazione appropriato.

Altri suggerimenti

Ho avuto lo stesso messaggio di errore ma la soluzione è diversa.

Il compilatore analizza il file dall'alto verso il basso.

Assicurati che una struttura sia definita PRIMA di usarla in un'altra:

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

typedef struct
{
    int weight;
} wheel_t;

Per i progetti iPhone cacao touch:

Ho avuto questo problema e grazie al commento di Eric Farraro sono stato in grado di risolverlo. Stavo importando una classe WSHelper.h in molte altre mie classi. Ma stavo anche importando alcune di quelle stesse classi nel mio WSHelper.h (circolare come diceva Eric). Quindi, per risolvere questo problema, ho spostato le importazioni dal mio file WSHelper.h al mio file WSHelper.m poiché non erano realmente necessarie nel file .h.

L'ho preso con un ciclo di importazione:

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

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

Devi nominare la tua struttura in questo modo:

typedef struct car_t {

   char

   wheel_t

} car_t;

Sono stato in grado di risolverlo usando la correzione di Gorgando, ma invece di spostare le importazioni, ho commentato ciascuna individualmente, ho creato l'app, quindi modificato di conseguenza fino a quando non me ne sono liberato.

@simpleBob

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

---FILE A.h

@class B;

@interface A{      
}
@end

il codice sopra mi ha aiutato a risolverlo. Qualcuno potrebbe spiegare cosa sta succedendo qui?

questo errore si verifica sostanzialmente quando si utilizza l'oggetto prima di utilizzarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top