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

このヘッダーを#includeObjective-C ファイルに記述して、問題なくコンパイルできます。

その同じ Objective-C ファイルを.mmサフィックスではなくサフィックスに変更し.m、それが現在 Objective-C++ ソースとして識別されていることを確認すると、Expected ')'上記の行にあるコンパイラ エラーが発生します。明確ではありませんが、エラーの原因を単語output_formatパラメーターに配置しているようです。

上記の関数には、括弧に関して構文が悪いと思われるものは何もありません。この 1 つの変更で違いが生じる理由がわかりません。

ここで誰かに何かが飛び出しますか?

4

1 に答える 1

3

簡単です。restrictキーワードは C++ 標準の一部ではないため、C++ コンパイラ (Objective-C++ コードのコンパイルに使用される) はそれを認識しません。

于 2013-01-22T10:50:10.477 に答える