Что означает эта ошибка:“ошибка:ожидаемый спецификатор-уточняющий список перед 'имя_типа'”?
Вопрос
Я работал над процессором 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;
Решение
Компилятор не знает, что spe_context_ptr_t - это тип.Убедитесь, что соответствующий typedef находится в области видимости при компиляции этого кода.Возможно, вы забыли включить соответствующий заголовочный файл.
Другие советы
У меня было такое же сообщение об ошибке, но решение другое.
Компилятор анализирует файл сверху донизу.
Убедитесь, что структура определена, ПРЕЖДЕ чем использовать ее в другом:
typedef struct
{
char name[50];
wheel_t wheels[4]; //wrong, wheel_t is not defined yet
} car_t;
typedef struct
{
int weight;
} wheel_t;
Проекты cocoa-touch для iPhone:
У меня была эта проблема, и благодаря комментарию Эрика Фарраро я смог ее решить.Я импортировал класс WSHelper.h во многие другие мои классы.Но я также импортировал некоторые из тех же классов в свой WSHelper.h (циклический, как сказал Эрик).Итак, чтобы исправить это, я переместил импорт из моего файла WSHelper.h в мой файл WSHelper.m, поскольку на самом деле они все равно не были нужны в файле .h.
Я получил это с помощью цикла импорта:
---FILE B.h
#import "A.h"
@interface B{
A *a;
}
@end
---FILE A.h
#import "B.h"
@interface A{
}
@end
Вы должны назвать свою структуру именно так:
typedef struct car_t {
char
wheel_t
} car_t;
Я смог разобраться с этим, используя исправление Gorgando, но вместо того, чтобы убрать импорт, я прокомментировал каждый из них по отдельности, создал приложение, затем отредактировал соответствующим образом, пока не избавился от них.
@simpleBob
---FILE B.h
#import "A.h"
@interface B{
A *a;
}
@end
---FILE A.h
@class B;
@interface A{
}
@end
приведенный выше код помог мне разобраться в этом.Не мог бы кто-нибудь объяснить, что здесь происходит?
эта ошибка в основном возникает, когда вы используете объект перед его использованием.