Objective c C函数中可以有两种返回类型吗?
我正在看一个旨在向OCaml公开Cocoa API的应用程序。代码由一个函数组成,该函数有两个值,其中提到了返回类型Objective c C函数中可以有两种返回类型吗?,objective-c,c,Objective C,C,我正在看一个旨在向OCaml公开Cocoa API的应用程序。代码由一个函数组成,该函数有两个值,其中提到了返回类型 CAMLprim value ml_NSWindow_center(value win_v) { CAMLparam1(win_v); NSWindow *win = NSWindow_val(win_v); [win center]; CAMLreturn(Val_unit); } 可能吗?或者这不是返回类型。根据,对于返回值为CAMLprim值的任何函数 此
CAMLprim value ml_NSWindow_center(value win_v)
{
CAMLparam1(win_v);
NSWindow *win = NSWindow_val(win_v);
[win center];
CAMLreturn(Val_unit);
}
可能吗?或者这不是返回类型。根据,对于返回值为CAMLprim值的任何函数
此函数必须具有返回类型CAMLprim value,且其参数类型必须为value。OCaml中提供给C函数的所有参数都是value类型。include标头提供转换宏,用于将类型值转换为C本机类型。在本例中,要转换为C整数,该宏为Int_val()然后,由于OCaml函数的返回值是unit,C函数必须返回一个unit,这是用宏Val_unit完成的。
根据,对于返回值为CAMLprim值的任何函数
此函数必须具有返回类型CAMLprim value,且其参数类型必须为value。OCaml中提供给C函数的所有参数都是value类型。include标头提供转换宏,用于将类型值转换为C本机类型。在本例中,要转换为C整数,该宏为Int_val()然后,由于OCaml函数的返回值是unit,C函数必须返回一个unit,这是用宏Val_unit完成的。
CAMLprim
似乎根本不是一个类型,而是该函数的链接/存储类-它似乎是#在我找到的一些标题中定义为空字符串。真正的返回类型是value
,它是一个整数类型的typedef
。CAMLprim
似乎根本不是一个类型,而是函数的一个链接/存储类-它似乎是#定义d以清空我找到的某些标题中的字符串。真正的返回类型是value
,这是整数类型的typedef
。函数不可能返回两个值(不同或相同类型)。我的猜测是,一个活动的#define
用于将CAMLprim
更改为某个编译器标志(或者可能没有)@pmg是正确的-查看cmd+ctrl+单击CAMLreturn
和CAMLprim
上的,您将看到它是什么。类型的名称非常奇怪:value
函数不可能返回两个值(不同或相同类型)。我猜一个活动的#define
用于将CAMLprim
更改为某个编译器标志(或者可能没有)。pmg是正确的-请在CAMLreturn
和CAMLprim
上查看