предупреждение: неиспользуемая переменная _cgo_a - PullRequest
2 голосов
/ 17 июня 2019

Что такое переменная _cgo_a?

Я пытаюсь связать статическую библиотеку c ++.

greeter.cpp

#include "greeter.h"
#include <iostream>

void
greet()
{
    std::cout << "Greetings\n";
}

greeter.h

#ifndef GREETER_H_
#define GREETER_H_

#ifdef __cplusplus
extern "C" {
#endif

void
greet();

#ifdef __cplusplus
}
#endif

#endif

Я скомпилировал вышесказанное в статическую библиотеку примерно так:

$ g++ -c greeter.cpp
$ ar vfx greeter.o -o libgreeter.a

и вот мой main.go

package main

// #cgo CFLAGS: -g -Wall
// #cgo LDFLAGS: -L. -lgreeter
// #include "greeter.h"
import "C"

func main() {
    C.greet()
}

Тогда, когда я сделаю go buildвот что я получаю:

# error
cgo-gcc-prolog: In function ‘_cgo_261f55e693f4_Cfunc_greet’:
cgo-gcc-prolog:46:49: warning: unused variable ‘_cgo_a’ [-Wunused-variable]

Моя версия go: go version go1.12.5 linux/amd64

РЕДАКТИРОВАТЬ: Если я удаляю -Wall из CFLAGS, он компилируется нормально.И все же, что такое переменная _cgo_a и почему она выдает ошибку?

1 Ответ

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

Не используйте -Wall в cgo CFLAGS.Это общая проблема в Go.Читайте больше в теме github: https://github.com/golang/go/issues/6883#issuecomment-383800123

...