我有一个带有此功能的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 ')'
参数上。
上面的函数中没有任何内容似乎是关于括号的错误语法,我无法理解为什么这一改变应该有所不同。
这里的任何人都会跳出来吗?
答案 0 :(得分:3)
简单,restrict
关键字不是C ++标准的一部分,因此C ++编译器(用于编译Objective-C ++代码)无法识别它。