【问题标题】:Avoid empty line in cgo exported function documentation避免在 cgo 导出函数文档中出现空行
【发布时间】:2020-06-19 16:46:48
【问题描述】:

我正在用 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 上,在解析该头文件时,它们很难正确显示智能感知,从而使头的使用更加困难。尤其是当你考虑到 cgo renames function parameters

有没有什么办法可以避免生成后不手动修改头文件?

编辑:

我发现 我认为 是 go 源代码中导致此问题的区域:

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

【问题讨论】:

  • 除了修复您已识别的代码(以删除额外的换行符)之外,我认为答案是否定的,您不能。我尝试了一些尝试使前缀块注释不以换行符结尾,这只会导致函数根本不被导出。 (不过,自动更新生成的头文件应该很容易:只需查找块注释结束序列,然后是空行,然后是 ^extern .*);$,然后删除空行。)
  • 我最终自己提出了拉取请求。它是在今天下午刚刚合并的,所以这应该不会很快成为一件事情。 go-review.googlesource.com/c/go/+/222419

标签: go cgo


【解决方案1】:

go 1.15 中应包含对此的修复。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多