Xcode中基于文件类型的奇怪语法错误

时间:2013-01-22 10:41:06

标签: c++ objective-c c xcode openal

我有一个带有此功能的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);

我可以在Objective-C文件中#include这个标头并编译好。

如果我将同一个Objective-C文件更改为.mm后缀而不是.m并验证它现在被标识为Objective-C ++源,我会收到编译器错误{{1在上面的那一行。虽然不清楚,但似乎是将错误的来源放在单词Expected ')'参数上。

上面的函数中没有任何内容似乎是关于括号的错误语法,我无法理解为什么这一改变应该有所不同。

这里的任何人都会跳出来吗?

1 个答案:

答案 0 :(得分:3)

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