今天使用AudioFileOpenWithCallbacks异步读取文件时,总是提示AudioFileOpenWithCallbacks第三个和第五个参数类型不对,也就是
AudioFile_WriteProc和AudioFile_SetSizeProc两个异步函数,可是明明是按照文档定义的,奇怪的很。文档里这两个函数分别声明为
typedef OSStatus (*AudioFile_WriteProc) (
void *inClientData,
SInt64 inPosition,
UInt32 requestCount,
const void *buffer,
UInt32 *actualCount
);
typedef SInt64 (*AudioFile_SetSizeProc)(
void *inClientData
);
折腾了好久,偶然打开了头文件的声明,发现了大有不同,系统文件里声明如下:
typedef OSStatus (*AudioFile_WriteProc)(
void * inClientData,
SInt64 inPosition,
UInt32 requestCount,
const void *buffer,
UInt32 * actualCount);
typedef OSStatus (*AudioFile_SetSizeProc)(
void * inClientData,
SInt64 inSize);
相信明眼人都能看到明显的不同,参数的类型和个数不同,函数类型不一致。这里本人使用的开发环境为10.6.8+XCODE4.2,不知道是官方文档描述有误,还是源码定义有误,很奇怪。