亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

字符串到 char (*array)[]

字符串到 char (*array)[]

Go
寶慕林4294392 2023-08-14 16:21:00
//file.gofunc main() {  message := "My Message :)"  // I've tried this slice before.  // tmpslice := (*[1 << 30]*C.char)(unsafe.Pointer(argv))[:length:length]   argv := make([]*C.char, len(message))  for i, s := range str {    cs := C.CString(string(s))    defer C.free(unsafe.Pointer(cs))    argv[i] = cs  }  C.notifyWebhook(&argv)}  //file.c  void notiftWebhook(char (*message)[]) {  printf("notiftWebhook executed | argv: %s \n", *message);  char url[500];  char data[200];  int user_id = 0xdeadfeed;  snprintf(url,500,"https://webhook.site/a6a8d1ae-6766-4d90-a4c8-87a9599bfbf0",token);  snprintf(data,200,"user_id=%d&text=%s",user_id,*message);  CURL *curl;  //CURLcode res;  //static const char *postthis = "moo mooo moo moo";  curl_global_init(CURL_GLOBAL_ALL);  curl = curl_easy_init();  if(curl) {    curl_easy_setopt(curl, CURLOPT_URL, url);    curl_easy_setopt(curl, CURLOPT_POSTFIELDS,data);    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);    curl_easy_perform(curl);  }  curl_global_cleanup();}編譯器返回:cgo-gcc-prolog:129:19: 錯誤:數組大小為負數我編寫了一個 webhook 函數,但觸發了 notificationWebhook 函數并發送了錯誤的參數。為什么?我哪里會犯錯誤?
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

字符串到 char (*array)[]


cgo-gcc-prolog: error: array size is negative

使用墊片。例如,


so.go:


// string to char (*array)[]


package main


/*

#include <stdlib.h>

#include <stdio.h>


void notify(char (*message)[]) {

    printf("notify | argv: %1$p %1$s\n", *message);

}


void shimmy(char *message[]) {

    printf("shimmy | argv: %1$p %1$s\n", *message);

    notify((char (*)[])*message);

}

*/

import "C"


import (

    "fmt"

    "unsafe"

)


func main() {

    message := "My Message :)"

    cs := C.CString(message)

    defer C.free(unsafe.Pointer(cs))

    fmt.Printf("main   | argv: %p %s\n", cs, C.GoString(cs))

    C.shimmy(&cs)

}

輸出:


$ go run so.go

main   | argv: 0x19cb820 My Message :)

shimmy | argv: 0x19cb820 My Message :)

notify | argv: 0x19cb820 My Message :)


$ go version

go version devel +4d5bb9c609 Fri Dec 20 23:07:52 2019 +0000 linux/amd64

$ go env CC

gcc

$ gcc --version

gcc (Ubuntu 9.2.1-9ubuntu2) 9.2.1 20191008


查看完整回答
反對 回復 2023-08-14
  • 1 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號