[英]Some dumb questions about Cocoa C-style functions
尽管我在Cocoa中开发了多年,但我从未开发一种C风格的库来处理非对象var。
我所谓的“ C样式函数”例如:
float myCStyleFunction(float var1, float var2);
知道Objective-C是C的后代,所以我试图制作一个真正的C函数。 但是编译器不允许一些简单的事情。
首先通过引用:
void makeSomethingWithImages(CGImageRef & im1, CGImageRef & im1);
这行不通。 编译器说Parameter name omitted
。 有没有一种方法可以通过引用传递我的CGImage?
其次,默认参数:
void makeSomethingWithImages(CGImageRef im1, CGImageRef im1, float tolerance) { ... }
void makeSomethingWithImages(CGImageRef im1, CGImageRef im1) {
makeSomethingWithImages(im1, im2, 0);
}
错误: Conflicting types for 'makeSomethingWithImages'
有没有办法设置一些默认参数?
附带的问题是:如果Obj-C是C的后代,为什么这些示例不起作用?
通过引用传递的是C ++而不是c,因此默认参数和函数重载也是如此,尽管clang为函数重载向c添加了扩展名,但是有附加的语法。
通过引用传递应使用- *
表示法( 指向地址的指针 ), &
是“ 地址处的值 ”, CGImageRef
定义为CGImage *CGImageRef;
在CGImage.h
类中,所以编译器Err ..
不,您不能使用按引用传递机制,也不能使用C中参数的默认值。如果Obj-C是C的后代,则这意味着合法的C代码被Obj-C编译接受,而不是相反。
但是您犯了一个错误,在Objective-C中没有按引用和默认值。 这两种构造都是C ++,而不是C。 存在Objective-C和C ++的混合,称为Objective-C ++。
C ++和Objective-C都是C的后代,因此混合使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.