首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串数组作为参数从go传递到C函数

将字符串数组作为参数从go传递到C函数
EN

Stack Overflow用户
提问于 2017-09-01 18:03:15
回答 1查看 1.5K关注 0票数 2

我有一个C函数:

代码语言:javascript
复制
int cgroup_change_cgroup_path(const char * path, pid_t pid, const char *const  controllers[])

我想用cgo在go语言中调用它。如何传递第三个参数,因为它接受字符串的C数组。

EN

回答 1

Stack Overflow用户

发布于 2017-09-01 22:36:36

您可以使用c helper函数构建数组,然后使用它们。

下面是同样问题的解决方案:

代码语言:javascript
复制
// C helper functions:

static char**makeCharArray(int size) {
        return calloc(sizeof(char*), size);
}

static void setArrayString(char **a, char *s, int n) {
        a[n] = s;
}

static void freeCharArray(char **a, int size) {
        int i;
        for (i = 0; i < size; i++)
                free(a[i]);
        free(a);
}

// Build C array in Go from sargs []string

cargs := C.makeCharArray(C.int(len(sargs)))
defer C.freeCharArray(cargs, C.int(len(sargs)))
for i, s := range sargs {
        C.setArrayString(cargs, C.CString(s), C.int(i))
}

约翰·巴拉姆发布的golangnuts帖子

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45997786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档