Objective c C函数中可以有两种返回类型吗?

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值的任何函数 此

我正在看一个旨在向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,且其参数类型必须为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
上查看