首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Cocoa C型函数的几个愚蠢问题

关于Cocoa C型函数的几个愚蠢问题
EN

Stack Overflow用户
提问于 2013-03-13 10:05:39
回答 2查看 105关注 0票数 0

尽管我在Cocoa开发了多年,但我从未开发过一种用于非对象vars的C风格库。

例如,我称之为“C风格的函数”:

代码语言:javascript
复制
float myCStyleFunction(float var1, float var2);

知道目标- C是C的后代,我试图建立一个真正的C函数。但是编译器不允许做一些简单的事情。

首先,通过引用:

代码语言:javascript
复制
void makeSomethingWithImages(CGImageRef & im1, CGImageRef & im1);

这不管用。编译器说Parameter name omitted,有什么方法可以通过引用传递我的CGImages?

第二,默认参数:

代码语言:javascript
复制
void makeSomethingWithImages(CGImageRef im1, CGImageRef im1, float tolerance) { ... }

void makeSomethingWithImages(CGImageRef im1, CGImageRef im1) {
    makeSomethingWithImages(im1, im2, 0);
}

错误:Conflicting types for 'makeSomethingWithImages'

有办法有一些默认参数吗?

还有一个次要的问题:如果Obj是C后裔,为什么这些例子不起作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-13 10:15:38

通过引用传递是C++而不是c,默认参数和函数重载也是如此,尽管clang为函数重载添加了扩展,但也有附加语法。

票数 4
EN

Stack Overflow用户

发布于 2013-03-13 21:44:17

不,不能使用引用传递机制,也不能对C中的参数使用默认值。如果Obj-C是C的后代,这意味着合法的C代码被Obj-C编译所接受,而不是相反。

但是你犯了一个错误,目标C中没有引用和默认值。这两个结构都是C++结构,而不是C结构。目标C和C++混合存在,称为Objective++.

C++和Objective都是C的后裔,所以混合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15382158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档