#objective-c #c #oop
#objective-c #c #ооп
Вопрос:
может кто-нибудь сказать мне, где я здесь ошибаюсь? Я пытаюсь создать указатель на структуру aqData, которая передается в функцию, и ввести тип приведения его к структурному типу AQPlayerState.
Я получаю ошибки — Использование необъявленного идентификатора «AQPlayerState» и ожидаемого выражения
@implementation AudioPlayer
#define kNumberBuffers 3
struct AQPlayerState {
AudioStreamBasicDescription mDataFormat;
AudioQueueRef mQueue;
AudioQueueBufferRef mBuffers[kNumberBuffers];
AudioFileID mAudioFile;
UInt32 bufferByteSize;
SInt64 mCurrentPacket;
UInt32 mNumPacketsToRead;
AudioStreamPacketDescription *mPacketDescs;
bool mIsRunning;
};
static void HandleOutputBuffer (
void *aqData,
AudioQueueRef inAQ,
AudioQueueBufferRef inBuffer
) {
struct AQPlayerState *pAqData = (AQPlayerState *) aqData;
Заранее спасибо за любую помощь
Комментарии:
1. И в чем заключается ваше сообщение об ошибке?
2. Ах, извините за это, пост отредактирован
Ответ №1:
Я полагаю, что Objective-C
ведет себя как C
. Если этого не произойдет, это может не относиться к Objective-C
.
структуры в C распознаются по их «полному имени». Попробуйте
struct AQPlayerState *pAqData = (struct AQPlayerState *) aqData;
или, еще лучше, вообще не приводить. Компилятор C знает, как преобразовать из void*
в любой другой указатель на объект
struct AQPlayerState *pAqData = aqData;
- неявное преобразование: хорошо
- явное преобразование (приведение): не очень хорошо