在Go中使用可变参数C函数

时间:2013-11-21 17:49:03

标签: go cgo

我在cgo上使用shm_openshm_open在Linux上用3个参数定义

int shm_open(const char *name, int oflag, mode_t mode);

而在OSX(达尔文)上,第3模式标志是可选的。

int shm_open(const char *name, int oflag, ...);

当尝试在OSX上传递模式时,这会产生CGO问题。它抱怨我传递了3个参数,当时只有2个参数。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

像往常一样,这个启示在发布到SO后1秒钟。你可以在CGO评论部分中声明函数,所以你要做的就是使用这样的包装器。

/*
#include <stdio.h>

int shm_open2(const char *name, int oflag, mode_t mode) {
  return shm_open(name, oflag, mode);
}
*/
import "C"