跳至内容

out

考虑 waitpid 函数

lib C
  fun waitpid(pid : Int32, status_ptr : Int32*, options : Int32) : Int32
end

函数的文档说明

The status information from the child process is stored in the object
that status_ptr points to, unless status_ptr is a null pointer.

我们可以像这样使用该函数

status_ptr = uninitialized Int32

C.waitpid(pid, pointerof(status_ptr), options)

这样我们传递一个 status_ptr 指针给函数,让它填充其值。

有一种更简单的方法来编写以上代码,即使用 out 参数

C.waitpid(pid, out status_ptr, options)

编译器会自动声明一个类型为 Int32status_ptr 变量,因为参数的类型是 Int32*

这将适用于任何 fun 参数,只要它的类型是指针(当然,只要函数确实填充了指针指向的值)。