在cgo中定义变量

在cgo中定义变量,go,cgo,Go,Cgo,我想在构建时在cgo中定义一个字符串变量。以下方法都不起作用 “common”未声明(首次在此函数中使用) “common”未声明(首次在此函数中使用) 格式错误的cgo参数:-DLOG=“common” 这似乎是不可能的,因为cgo进行了一些破坏/解析——您可以只使用一个普通的#定义日志“common”(即不使用cgo特殊标志)吗 或者,如果您不能像这样调用go run/go build:CGO\u CFLAGS='-DLOG=“common”'go run so.go您可以在CGO中定

我想在构建时在cgo中定义一个字符串变量。以下方法都不起作用

  • “common”未声明(首次在此函数中使用)

  • “common”未声明(首次在此函数中使用)

  • 格式错误的cgo参数:-DLOG=“common”


  • 这似乎是不可能的,因为cgo进行了一些破坏/解析——您可以只使用一个普通的
    #定义日志“common”
    (即不使用cgo特殊标志)吗


    或者,如果您不能像这样调用
    go run
    /
    go build
    CGO\u CFLAGS='-DLOG=“common”'go run so.go

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

    例如:

    主程序包
    /*
    int initflag=2;
    int GetInitFlag(){
    返回初始标志;
    }
    */
    输入“C”
    输入“fmt”
    //CFlag get c标志
    func CFlag()int{
    值:=C.GetInitFlag()
    返回int(值)
    }
    func main(){
    fmt.Println(CFlag())
    }
    
    字符串类型必须将c中的字符*转换为字符串

    //C字符串到Go字符串
    func C.GoString(*C.char)字符串
    

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