Это C ++ в файле кода Objective C? - PullRequest
0 голосов
/ 28 февраля 2011

Я рассмотрю пример проекта от Apple под названием Mixer Host.В функции обратного вызова есть несколько строк, которые используют синтаксис «->» для ссылки на mBuffers, который является структурой.Я думал, что это синтаксис C ++, но этот файл имеет расширение .m, которое я думал, было C плюс расширения Objective-C.Это на самом деле синтаксис C ++?Можно ли поместить синтаксис C ++ в файл .m, не переименовывая его в .mm с помощью Xcode?

AudioUnitSampleType *outSamplesChannelLeft;
AudioUnitSampleType *outSamplesChannelRight;  
outSamplesChannelLeft                 = (AudioUnitSampleType *) ioData->mBuffers[0].mData;
if (isStereo) outSamplesChannelRight  = (AudioUnitSampleType *) ioData->mBuffers[1].mData;

Ответы [ 3 ]

3 голосов
/ 28 февраля 2011

Нет, это совершенно верно C. Это то, как вы обращаетесь к членам данных через указатель в C и C ++.

В C ++ вы также можете ссылаться на функции-члены таким образом, но в функции нет вызоваприцел.

1 голос
/ 28 февраля 2011

Я не знаю Objective-C, но "->" был в C, так как он K & R дней. Я уверен, что это действительно Objective-C. Это не дополнение C ++.

0 голосов
/ 28 февраля 2011

Предполагая, что AudioUnitSampleType является структурой / классом, это может быть либо C ++, либо Objective-C.Просто потому, что чистый C потребовал бы указать struct перед своим именем, когда вы объявляете переменную (указатель).Это может быть что угодно иначе.Обычно файлы Objective-C ++ имеют расширение .mm, если только вы не измените Xcode для обработки файлов .m как Objective-C ++, что маловероятно.Таким образом, этот код оказывается Objective-C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...