为了账号安全,请及时绑定邮箱和手机立即绑定

在 cgo 中定义变量

在 cgo 中定义变量

Go
交互式爱情 2021-12-20 10:43:28
我想在构建时在 cgo 中定义一个字符串变量。以下方法均无效。#cgo CFLAGS: -DLOG="common"'common' 未声明(首次在此函数中使用)#cgo CFLAGS: -DLOG=common'common' 未声明(首次在此函数中使用)#cgo CFLAGS: -DLOG=\"common\"格式错误的#cgo 参数:-DLOG="common"
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

看起来这是不可能的,因为 cgo 做了一些修改/解析——你能逃脱正常的#define LOG "common"(即不使用 CGO 特殊标志)。

或者失败了你可以像这样调用go rungo buildCGO_CFLAGS='-DLOG="common"' go run so.go


查看完整回答
反对 回复 2021-12-20
?
慕斯王

TA贡献1864条经验 获得超2个赞

你可以在 cgo 中定义一个变量,就像在 c 代码中定义它一样,


例子:


package main


/*

int initflag=2;


int GetInitFlag(){

   return initflag;

}

*/

import "C"

import "fmt"


// CFlag get c flag

func CFlag() int {


    value := C.GetInitFlag()


    return int(value)

}


func main() {

    fmt.Println(CFlag())

}

字符串类型必须将 c 中的 char* 转换为字符串


// C string to Go string

func C.GoString(*C.char) string

https://golang.org/cmd/cgo/


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信