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

标签 c++ objective-c c xcode openal

我有一个带有此函数的 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/

相关文章:

c++ - 为什么 for-loop 不是编译时表达式并且扩展的 constexpr 允许在 constexpr 函数中进行循环

c++ - 如何在 C++ 中初始化双指针结构数组?

objective-c - 在编写 CodeRunner 文档时如何包含非框架库?

c - 错误 : format'%s' expects argument of type 'char *' , 但参数 2 的类型为 'int' [-Wformat=]

c++ - Intel TBB 会在 AMD 处理器上工作吗?

c++ - 矩阵和 vector 乘法

c++ - 何时为多态类初始化 vptr(指向 vtable)?

ios - 努力将 Objective C 选择器和目标签名转换为 Swift

ios - 登录屏幕和导航 Controller

c - 如何在C编程中使用char []和scanf询问用户名