在 cgo 中定义变量

我想在构建时在 cgo 中定义一个字符串变量。以下方法均无效。

  1. #cgo CFLAGS: -DLOG="common"

    'common' 未声明(首次在此函数中使用)

  2. #cgo CFLAGS: -DLOG=common

    'common' 未声明(首次在此函数中使用)

  3. #cgo CFLAGS: -DLOG=\"common\"

    格式错误的#cgo 参数:-DLOG="common"


交互式爱情
浏览 199回答 2
2回答

qq_遁去的一_1

看起来这是不可能的,因为 cgo 做了一些修改/解析——你能逃脱正常的#define LOG "common"(即不使用 CGO 特殊标志)。或者失败了你可以像这样调用go run/ go build:CGO_CFLAGS='-DLOG="common"' go run so.go

慕斯王

你可以在 cgo 中定义一个变量,就像在 c 代码中定义它一样,例子:package main/*int initflag=2;int GetInitFlag(){   return initflag;}*/import "C"import "fmt"// CFlag get c flagfunc CFlag() int {    value := C.GetInitFlag()    return int(value)}func main() {    fmt.Println(CFlag())}字符串类型必须将 c 中的 char* 转换为字符串// C string to Go stringfunc C.GoString(*C.char) stringhttps://golang.org/cmd/cgo/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go