kotlin native CValuesRef

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32768743/article/details/87122779

CValuesRef这个东西,是因为在用read函数中出现的
在这里插入图片描述

public fun read(__fd: kotlin.Int, __buf: kotlinx.cinterop.CValuesRef<*>?, __nbytes: platform.posix.size_t /* = kotlin.ULong */): platform.posix.ssize_t /* = kotlin.Long */ { /* compiled code */ }

不知道第2个参数填什么
找到官方文档,(⊙o⊙)…,没读懂什么
在这里插入图片描述
在这里插入图片描述

然后想到,是不是哪个demo中有用,于是找到
在这里插入图片描述
recv函数是需要用CValuesRef的,第二个参数就是
依葫芦画瓢
最后这个样子可以用了
在这里插入图片描述

package csapp

import kotlinx.cinterop.*
import platform.posix.*

fun main() {
    val fd1 = open("foobar.txt", O_RDONLY, 0)
    val fd2 = open("foobar.txt", O_RDONLY, 0)
    val buffer = ByteArray(1024)
    buffer.usePinned { pinned ->
        read(fd1, pinned.addressOf(0), 1)
        read(fd2, pinned.addressOf(0), 1)
        println("c = ${buffer[0].toChar()}")
    }
    exit(0)
}

这里又多了usePinned, addressOf两个方法
这个后面慢慢再弄吧
CValuesRef怎么构造一个替代品让read函数可以使用的任务完成了

猜你喜欢

转载自blog.csdn.net/qq_32768743/article/details/87122779