有人能告诉我哪里出错了吗?我试图创建一个指向传递给函数的结构 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;
在此先感谢您的帮助
最佳答案
我相信 Objective-C
的行为与 C
相同。如果不是,这可能不适用于 Objective-C
。
C 中的结构通过它们的“全名”来识别。 试试
struct AQPlayerState *pAqData = (struct AQPlayerState *) aqData;
或者,更好,根本不转换。 C 编译器知道如何将 void*
转换为任何其他指向对象的指针
struct AQPlayerState *pAqData = aqData;
- 隐式转换:好
- 显式转换(cast):不太好
关于objective-c - 如何创建指向结构的指针并对其进行类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5928438/