Как передать сообщение об ошибке от C до Go? - PullRequest
1 голос
/ 20 июня 2019

Я хочу передать сообщение об ошибке из кода C в стек Go. Как я могу сделать это с помощью параметра out?

Я был бы очень благодарен, если бы кто-нибудь смог мне помочь.

1 Ответ

2 голосов
/ 20 июня 2019

Любая функция C (даже пустые функции) может быть вызвана в контексте множественного присваивания, чтобы получить как возвращаемое значение (если оно есть), так и переменную C errno в качестве ошибки (используйте _, чтобы пропустить значение результата, еслифункция возвращает void).

Тогда в вашем коде c все, что вам нужно сделать, это установить «глобальную» переменную errno.

package main


// #include <errno.h>
// int fortytwo()
// {
//      errno = ENOENT;
//      return 42;
// }
import "C"
import "fmt"

func main() {

    n, err = C.fortytwo()
}
...