У меня есть заголовок 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);
Я могу #include
этот заголовок в файле Objective-C и скомпилировать нормально.
Если я изменю тот же файл Objective C на .mm
суффикс, а не .m
и убедитесь, что он теперь определен как источник Objective C ++, я получаю ошибку компилятора, которая говорит Expected ')'
на линии выше. Хотя и не ясно, но, похоже, источник ошибки output_format
параметр.
В приведенной выше функции нет ничего плохого синтаксиса в отношении скобок, и я не могу понять, почему это одно изменение должно иметь какое-то значение.
Здесь что-нибудь выпрыгивает?
Просто restrict
Ключевое слово не является частью стандарта C ++, поэтому компилятор C ++ (который используется для компиляции кода Objective-C ++) не распознает его.
Других решений пока нет …