我有一个用C编写的串行库,它有一个rx回调。我们访问在此回调函数中通过串行链路接收的字节。我想将收到的字节传递给用Go编写的应用程序层。为此,我已经能够从 C Rx 回调调用 go 函数。
但是,当我尝试将指向rx字节的指针传递给Go函数时,我没有得到我所期望的。
我编写了一个示例程序,其中 C 函数返回指向 Go 函数的指针。
我期望:将被打印出来hello
实际结果:
%!s(*uint8=0xc000018072)
这里有一个测试程序来说明我正在尝试做的事情:
package main
//#include <stdint.h>
// extern void goHandler(uint8_t *str);
//
// static void doPrint(uint8_t *str) {
// goHandler(str);
// }
import "C"
import "fmt"
//export goHandler
func goHandler(str *uint8) {
fmt.Printf("%s\n",str)
}
func main() {
bytes := []uint8("hello")
C.doPrint((*C.uchar)(&bytes[0]))
}
编辑:我学习了如何执行指针算术来访问与指针地址偏移的数据,但是有没有办法将整个数据从偏移量0传递到特定的偏移量(而不是逐个?)
慕尼黑8549860
相关分类