我收到错误 - 使用未声明的标识符“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;
提前感谢您提供任何帮助
答案 0 :(得分:3)
我认为Objective-C
的行为与C
相同。如果不是,则可能不适用于Objective-C
。
结构被其“全名”识别。 尝试
struct AQPlayerState *pAqData = (struct AQPlayerState *) aqData;
或,甚至更好,根本不投。 C编译器知道如何从void*
转换为任何其他指向对象的指针
struct AQPlayerState *pAqData = aqData;