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

Weird syntax error in Xcode based on file type

本文关键字:Xcode 错误 语法 类型 于文件 文件      更新时间:2023-10-16

我有一个带有此函数的 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++ 源,我会收到一个编译器错误,上面一行显示Expected ')'。虽然不清楚,但它似乎将错误的源放在单词output_format参数上。

关于括号,上述函数中没有任何语法似乎很糟糕,我不明白为什么这个更改应该有任何不同。

有什么东西跳出来吗?

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