Подтвердить что ты не робот

Что означает эта ошибка: "error: expected specifier-qualifier-list before" type_name? "?

Я работаю над процессором Cell, и я пытаюсь создать структуру, которая будет содержать spe_context_ptr_t, который будет использоваться в потоке для запуска контекста spe, а также будет содержать указатель на что-то еще который будет передан в контекст spu из потока (в настоящее время я пытаюсь просто сделать его общим указателем, но на самом деле это будет указатель на другую структуру, которую я определил). Когда я пытаюсь скомпилировать, я получаю следующую ошибку:

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;
4b9b3361

Ответ 1

Компилятор не знает, что spe_context_ptr_t является типом. Убедитесь, что соответствующий тип typedef находится в области, когда этот код скомпилирован. Возможно, вы забыли включить соответствующий заголовочный файл.

Ответ 2

У меня было такое же сообщение об ошибке, но решение отличается.

Компилятор анализирует файл сверху вниз.

Убедитесь, что структура определена, прежде чем использовать ее в другой:

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

typedef struct
{
    int weight;
} wheel_t;

Ответ 3

Для проектов iPhone cocoa -touch:

У меня была эта проблема, и благодаря комментарию Эрика Фарраро я смог решить эту проблему. Я импортировал класс WSHelper.h во многих других моих классах. Но я также импортировал некоторые из тех же классов в свой WSHelper.h(круговой, как сказал Эрик). Итак, чтобы исправить это, я переместил импорт из моего файла WSHelper.h в файл WSHelper.m, так как они вообще не нужны в файле .h.

Ответ 4

Вы должны называть свою структуру следующим образом:

typedef struct car_t {

   char

   wheel_t

} car_t;

Ответ 5

Я получил его с контуром импорта:

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

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

Ответ 6

Мне удалось разобраться с использованием исправления Gorgando, но вместо того, чтобы перемещать импорт, я прокомментировал каждый отдельно, построил приложение, а затем отредактировал его, пока я не избавился от них.

Ответ 7

@simpleBob

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

---FILE A.h

@class B;

@interface A{      
}
@end

код выше помог мне разобраться. Может ли кто-нибудь объяснить, что здесь происходит?

Ответ 8

эта ошибка в основном возникает, когда вы используете объект перед его использованием.