第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

CGO從C ** float獲得[] [] float32

CGO從C ** float獲得[] [] float32

Go
動(dòng)漫人物 2021-04-27 22:21:27
我正在嘗試使用C兼容標(biāo)頭在C ++庫中調(diào)用一個(gè)函數(shù),該函數(shù)希望我傳入4x4矩陣以進(jìn)行填充。我的Go函數(shù)定義如下所示:func GetMatrix(matrix []float32)和c標(biāo)頭定義如下:void getMatrix(const float **matrix)文檔不正確,并且基礎(chǔ)C類型實(shí)際上是一個(gè)16元素的float數(shù)組。因此問題就變成了,我可以將C.GoBytes與一個(gè)指針一起使用,指向一個(gè)數(shù)組的指針,如果是這樣,如何從[] byte中獲取一個(gè)[] float32?
查看完整描述

3 回答

?
慕的地6264312

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊

編輯這將打印正確的內(nèi)容


package main


/*

#include <stdio.h>

void getMatrix(const float **matrix){

    float *m = (float *)matrix;

    int i;

    for(i = 0; i<9; i++) {

        printf("%f\n",m[i]);

    }

}

*/

import "C"

import "unsafe"


func main() {

    a := []float32{1,2,3,4,5,6,7,8,9}

    C.getMatrix((**C.float)(unsafe.Pointer(&a[0])))

}


查看完整回答
反對 回復(fù) 2021-05-10
?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

這是一種將指向go數(shù)組的指針傳遞給C函數(shù)的方法,因此C函數(shù)可以填充它:


package main

/*

#include <stdio.h>

void getMatrix(float *m) {

    int i;

    for(i = 0; i < 16; i++) {

        m[i] = (float)i;

    }

}

*/

import "C"

import "fmt"

func main() {

    var a [16]float32

    C.getMatrix((*C.float)(&a[0]))

    fmt.Println(a)

}


查看完整回答
反對 回復(fù) 2021-05-10
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

擴(kuò)展Inuart提供的答案:


package main


/*

#include <stdio.h>

void getMatrix(const float **matrix){

    float *m = (float *)*matrix;

    int i;

    for(i = 0; i<16; i++) {

       printf("%f\n",m[i]);

    }

}

*/

import "C"


import "unsafe"


func main() {

    // Create the contiguous 16 element array, but organise it how it is described.

    a := [4][4]float32{

        {1, 2, 3, 4},

        {5, 6, 7, 8},

        {9, 10, 11, 12},

        {13, 14, 15, 16},

    }

    m := &a // Take the pointer.

    C.getMatrix((**C.float)(unsafe.Pointer(&m))) // Take the handle and pass it.

}

這為您提供了您似乎需要的處理行為,并具有Go語言中數(shù)據(jù)的形狀符合C API所要求的優(yōu)點(diǎn)-無需回避使用的便利性和安全性繼續(xù)吧,僅因?yàn)槟谂cC交互。


查看完整回答
反對 回復(fù) 2021-05-10
  • 3 回答
  • 0 關(guān)注
  • 277 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)