我需要为C库编写手册页吗?


12

我为Linux和FreeBSD编写了一个小型C库,并将为其编写文档。我试图学习有关创建手册页的更多信息,但是没有找到制作图书馆手册页的最佳实践的说明或描述。特别是,我对放置函数手册页的哪个部分感兴趣?3?也许有好的例子或手册?为库中的每个函数创建手册页是个坏主意吗?


2
坦白地说,man除了标准库和系统调用外,我从不用于编程。
el.pescado

Answers:


25

图书馆的手册页将在第3节中介绍。

对于良好的手册页示例,请记住,其中一些页面是使用groff的特定详细信息和/或使用并非真正可移植的特定宏编写的。

手册页的可移植性总是存在一些陷阱,因为某些系统可能(也可能不)使用特殊功能。例如,在记录文档时dialog,我必须牢记(和变通)各种系统中显示示例(没有理由)的差异。

首先阅读有关man man标准宏的相关章节,然后比较 FreeBSD和Linux的描述。

您是选择为库编写一个手册页,还是为功能(或功能组)编写单独的手册页,取决于功能描述的复杂程度:

  • ncurses在几十个手册页中具有数百个功能。
  • 对话框在一个手册页中具有数十种功能。其他人一定会显示更多示例。

进一步阅读:


10

我用罗恩。您只需编写markdown,它将变成手册页。还有一个js克隆(标记能力稍差)。

我一直在通过使用END_MAN定界的Heredocs和它的C / C ++代码来记录我的脚本,而在C内使用相同的END_MAN定界的Heredocs /* */。可以很容易地用sed将其提取出来,然后渲染成联机帮助页。(通过一点点UNIX信号黑客以及inotifywait,您可以实时提取和查看您的手册页部分,并在源更新时重新加载手册页浏览器。)

对于本节,对于用户级C库,则为3。您可以在man(1)中阅读有关节号的信息。

如果你想看到一些可读性强,结构良好的范例手册页,我想看看在的Plan9 https://swtch.com/plan9port/unix/库在这里你可以看到的非常创造者c,并UNIX和它的文档系统可能打算让这些东西正常工作。


3

为了补充其他答案,可以用来简化编写手册页的另一种markdown语言是reStructuredTextrst2man命令,它是python-docutils软件包的一部分。

这种markdown语言已被python用作其文档,并且比rst2man会从reStructuredText为您生成的旧的troff man宏更易于学习,编写和维护。


1

您可以使用doxygen记录API,以提供HTML形式的引用,还可以生成手册页和其他格式以供离线阅读。

doxygen的优点在于它是一种“内联”文档,例如JavaDoc或PythonDoc,是接口注释的两倍(或vv。是文档文本的注释的两倍);您可以将文档文本添加到源文件/头文件中,然后从中提取文件文本,从而提高了保持最新状态的可能性。


1
值得注意的是Doxygen可以导出手册页!
el.pescado

@ el.pescado感谢您提醒我,我将其合并到我的文本中。
墨菲
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.