2013-11-21 36 views
4

我使用shm_open和cgo。 shm_open與3個參數定義在Linux在Go中使用可變參數C函數

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

而在OSX(達爾文)的第三模式標誌是可選的。

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

這會在嘗試在OSX上傳遞模式時產生CGO問題。它抱怨我傳遞了3個參數,當時只有2個參數。

我該如何解決這個問題?

回答

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"