我有一个带有此函数的 C header :
OSStatus MyGetDataFromExtAudioRef(ExtAudioFileRef ext_file_ref, const AudioStreamBasicDescription* restrict output_format, ALsizei max_buffer_size, void** data_buffer, ALsizei* data_buffer_size, ALenum* al_format, ALsizei* sample_rate);
我可以在 Objective-C 文件中#include
这个 header 并正常编译。
如果我将同一个 Objective-C 文件更改为 .mm
后缀而不是 .m
并验证它现在是否被识别为 Objective-C++ 源,我得到编译器错误,上面一行显示 Expected ')'
。虽然不清楚,但似乎将错误来源放在了单词 output_format
参数上。
就括号而言,上述函数中没有任何语法似乎是错误的,而且我不明白为什么这一更改会产生任何影响。
这里有人有什么特别的想法吗?
最佳答案
很简单,restrict
关键字不是 C++ 标准的一部分,因此 C++ 编译器(用于编译 Objective-C++ 代码)无法识别它。
关于c++ - Xcode 中基于文件类型的奇怪语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456654/