Избегайте пустой строки в документации экспортируемых функций cgo

Я пишу библиотеку на Go, которую я компилирую в нативную библиотеку с помощью CGo, однако, когда функции экспортируются, у них есть эта надоедливая пустая строка между объявлением функции и комментарием к документации.

В качестве примера, скажем, у меня есть это в моем файле go

/**
 * Prints an integer.
 *
 * @param p0 an integer to print.
 */
//export PrintInteger
func PrintInteger(val C.int) {
    fmt.Printf("%v", val);
}

После того, как он экспортируется в мой заголовочный файл C, он выглядит так:

/**
 * Prints an integer.
 *
 * @param p0 an integer to print.
 */

extern void PrintInteger(int p0);

Эта пустая строка по большей части не является проблемой, но в некоторых IDE при синтаксическом анализе этого файла заголовка возникают трудности с правильным отображением IntelliSense, что немного затрудняет использование заголовка. Особенно, если учесть, как cgo параметры функции

Есть ли способ избежать этого без ручного изменения файла заголовка после его создания?

Изменить:

Я нашел то, что я считаю, является областью в исходном коде go, которая вызывает это:

https://github.com/golang/go/blob/master/src/cmd/cgo/out.go#L922


person Nathan F.    schedule 06.03.2020    source источник
comment
Помимо исправления кода, который вы определили (чтобы удалить лишнюю новую строку), я думаю, что ответ - нет, вы не можете. Я немного поэкспериментировал, пытаясь сделать так, чтобы комментарий блока префикса не заканчивался новой строкой, и это просто приводит к тому, что функция вообще не экспортируется. (Однако должно быть легко автоматизировать обновление сгенерированных файлов заголовков: просто найдите последовательность конца комментария блока, за которой следует пустая строка, за которой следует ^extern .*);$, и удалите пустую строку.)   -  person torek    schedule 07.03.2020
comment
В итоге я сам сделал запрос на вытягивание. Это было только что объединено сегодня днем, так что это, наконец, не должно быть чем-то довольно скоро. go-review.googlesource.com/c/go/+/222419   -  person Nathan F.    schedule 08.03.2020


Ответы (1)


Исправление для этого должно быть включено в go 1.15.

https://go-review.googlesource.com/c/go/+/222419/

person Nathan F.    schedule 17.03.2020