尽管我在Cocoa开发了多年,但我从未开发过一种用于非对象vars的C风格库。
例如,我称之为“C风格的函数”:
float myCStyleFunction(float var1, float var2);知道目标- C是C的后代,我试图建立一个真正的C函数。但是编译器不允许做一些简单的事情。
首先,通过引用:
void makeSomethingWithImages(CGImageRef & im1, CGImageRef & im1);这不管用。编译器说Parameter name omitted。,有什么方法可以通过引用传递我的CGImages??
第二,默认参数:
void makeSomethingWithImages(CGImageRef im1, CGImageRef im1, float tolerance) { ... }
void makeSomethingWithImages(CGImageRef im1, CGImageRef im1) {
makeSomethingWithImages(im1, im2, 0);
}错误:Conflicting types for 'makeSomethingWithImages'
有办法有一些默认参数吗?
还有一个次要的问题:如果Obj是C后裔,为什么这些例子不起作用?
发布于 2013-03-13 10:15:38
通过引用传递是C++而不是c,默认参数和函数重载也是如此,尽管clang为函数重载添加了扩展,但也有附加语法。
发布于 2013-03-13 21:44:17
不,不能使用引用传递机制,也不能对C中的参数使用默认值。如果Obj-C是C的后代,这意味着合法的C代码被Obj-C编译所接受,而不是相反。
但是你犯了一个错误,目标C中没有引用和默认值。这两个结构都是C++结构,而不是C结构。目标C和C++混合存在,称为Objective++.
C++和Objective都是C的后裔,所以混合。
https://stackoverflow.com/questions/15382158
复制相似问题