繁体   English   中英

这个C ++是否在Objective-C代码文件中?

[英]Is this C++ in an Objective-C code file?

我正在研究一个来自Apple的名为Mixer Host的示例项目。 在回调函数中,有几行使用“->”语法引用作为结构的mBuffers。 我以为这是C ++语法,但是此文件具有.m扩展名,我认为是C加Objective-C扩展名。 这实际上是C ++语法吗? 是否可以将C ++语法放入.m文件中而不用Xcode将其重命名为.mm?

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

不,那是完全有效的C语言。这就是在C和C ++中通过指针引用数据成员的方式。

在C ++中,您也可以以这种方式引用成员函数,但是看不到函数调用。

我不知道Objective-C,但是自从他K&R时代以来,“->”一直在C中。 我确定它是有效的Objective-C。 它不是C ++的补充。

假设AudioUnitSampleType是一个结构/类,则可以是C ++或Objective-C。 仅仅因为纯C在声明变量(指针)时需要在其名称之前声明struct 否则可能是其他任何事情。 通常,Objective-C ++文件具有.mm扩展名,除非您更改Xcode将.m文件视为Objective-C ++,这不太可能。 因此,此代码原来是Objective-C。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM