今天使用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,不知道是官方文档描述有误,还是源码定义有误,很奇怪。