Go和C混合编程新手注意事项:解决常见错误
package main
/*
#cgo CFLAGS: -I./include
#cgo LDFLAGS: -L./lib -lmylib
#include <mylib.h>
*/
import "C"
import (
"fmt"
"runtime"
"unsafe"
)
func main() {
// 设置Go的垃圾收集器的并行度
// 这是为了配合C代码中可能使用的其他并行机制
runtime.GOMAXPROCS(runtime.NumCPU())
// 调用C函数,传递参数并获取结果
result := C.my_function(C.int(42))
fmt.Printf("C函数返回的结果是: %d\n", uintptr(result))
}
这个示例代码展示了如何在Go程序中正确地设置并行度,并调用一个C库中的函数。这里使用runtime.GOMAXPROCS
来设置垃圾收集器的并行度,这样做可以减少垃圾收集对程序运行的影响。同时,通过C.my_function
调用C函数,并使用C.int
来传递整数参数。最后,使用uintptr
来正确地打印结果,因为C中的整数类型可能不是指针安全的。
评论已关闭