2

我有一个具有此功能的 C 标头:

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);

我可以将#include这个头文件放在一个 Objective-C 文件中并编译得很好。

如果我将同一个 Objective-C 文件更改为.mm后缀,而不是.m验证它现在被识别为 Objective-C++ 源代码,我会收到Expected ')'上面一行中的编译器错误。虽然不清楚,但似乎将错误的根源放在了 wordoutput_format参数上。

就括号而言,上述函数中没有任何语法错误,我不明白为什么这一更改会产生任何影响。

这里有什么东西会跳出来吗?

4

1 回答 1

3

很简单,restrict关键字不是 C++ 标准的一部分,因此 C++ 编译器(用于编译 Objective-C++ 代码)无法识别它。

于 2013-01-22T10:50:10.477 回答