Ответ 1
Компилятор не знает, что spe_context_ptr_t является типом. Убедитесь, что соответствующий тип typedef находится в области, когда этот код скомпилирован. Возможно, вы забыли включить соответствующий заголовочный файл.
Я работаю над процессором 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;
Для проектов iPhone cocoa -touch:
У меня была эта проблема, и благодаря комментарию Эрика Фарраро я смог решить эту проблему. Я импортировал класс WSHelper.h во многих других моих классах. Но я также импортировал некоторые из тех же классов в свой WSHelper.h(круговой, как сказал Эрик). Итак, чтобы исправить это, я переместил импорт из моего файла WSHelper.h в файл WSHelper.m, так как они вообще не нужны в файле .h.
Вы должны называть свою структуру следующим образом:
typedef struct car_t {
char
wheel_t
} car_t;
Я получил его с контуром импорта:
---FILE B.h
#import "A.h"
@interface B{
A *a;
}
@end
---FILE A.h
#import "B.h"
@interface A{
}
@end
Мне удалось разобраться с использованием исправления Gorgando, но вместо того, чтобы перемещать импорт, я прокомментировал каждый отдельно, построил приложение, а затем отредактировал его, пока я не избавился от них.
@simpleBob
---FILE B.h
#import "A.h"
@interface B{
A *a;
}
@end
---FILE A.h
@class B;
@interface A{
}
@end
код выше помог мне разобраться. Может ли кто-нибудь объяснить, что здесь происходит?
эта ошибка в основном возникает, когда вы используете объект перед его использованием.