O que isso significa erro: “erro: esperado especificador-qualificador-lista antes de 'type_name'”?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu tenho trabalhado no processador Cell e eu estou tentando criar uma estrutura que irá realizar uma spe_context_ptr_t, que será usado dentro do segmento para lançar um contexto spe e também irá realizar um ponteiro para outra coisa que a vontade ser passado para o contexto spu de dentro do segmento (atualmente estou tentando apenas torná-lo um ponteiro genérico, mas na realidade ele será um ponteiro para outra estrutura que eu definido). Quando eu tentar e compilação, eu recebo o seguinte erro:

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;
Foi útil?

Solução

O compilador não sabe que spe_context_ptr_t é um tipo. Verifique se o typedef apropriada está no escopo quando esse código é compilado. Você pode ter esquecido de incluir o arquivo de cabeçalho apropriado.

Outras dicas

Eu tive a mesma mensagem de erro, mas a solução é diferente.

O compilador analisa o arquivo de cima para baixo.

Certifique-se de um struct é definido antes de o utilizar em outro:

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

typedef struct
{
    int weight;
} wheel_t;

Para iPhone projectos de cacau-touch:

Eu tive esse problema e, graças ao comentário de Eric Farraro, eu era capaz de resolvê-lo. Eu estava importando um WSHelper.h classe em muitas das minhas outras classes. Mas eu também estava importando algumas dessas mesmas classes no meu WSHelper.h (circular como Eric disse). Assim, para corrigir isso me mudei as importações de meu arquivo WSHelper.h para o meu arquivo WSHelper.m como eles não foram realmente necessário no arquivo .h de qualquer maneira.

Eu tenho-a com um loop de importação:

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

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

Você tem que nomear seu struct assim:

typedef struct car_t {

   char

   wheel_t

} car_t;

Eu era capaz de resolver isso usando correção de Gorgando, mas em vez de mover as importações de distância, eu comentei cada individualmente, construiu o aplicativo, em seguida, editado em conformidade até que me livrar deles.

@simpleBob

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

---FILE A.h

@class B;

@interface A{      
}
@end

código acima me ajudou a classificar. alguém pode explicar o que está acontecendo aqui?

este erro vem, basicamente, quando você usar o objeto antes de usá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top