C 文档:帮助 Doxygen 识别类结构



我有一个 C 库,我想为它自动生成一些 API 文档。Doxygen似乎是这类事情的事实上的工具,所以我写了几个玩具类(使用与我的库相同的编码风格)来测试它。关于编码风格的一些注意事项:

  • 每个类都有一个头(.h)文件,其中包含该类的数据结构的typedef和所有类方法的原型。这是我希望我的图书馆的用户能够看到的信息。
  • 相应的.c文件包含完整的数据结构定义以及所有类方法的实现。实现的详细信息不应显示在 API 文档中。
  • 有关玩具示例代码,请参阅 https://github.com/standage/doc-test。

当我在我的例子上运行 Doyxgen 时,这就是我得到的:http://standage.github.io/doc-test。生成的文档有点笨拙 - 有一个数据结构列表和一个文件列表。理想情况下,我想要的是一个类列表,其中每个类页面都显示与该类关联的函数/方法,并且类名链接到该类的详细信息页面。使用Doxygen(或任何其他工具)可以做到这一点吗?

Doxygen支持"C类"的文档 - 只需添加

  1. 包含其数据成员的结构的 class 指令
  2. memberof指令对其职能
  3. publicprivate指令到函数/成员

例:

/** This is My Class!
    class MyClass
    */
typedef struct MyClass
{
 /** This is member A 
   private
   */
 int memberA;
 /** This is member B 
   private
   */
 int memberB;
} MyClass;
/** A private member function of MyClass
    param i Some value
    private
    memberof MyClass
    */
static void MyClass_privateFunction(struct MyClass* this, int i)
{
}
/** A public member function of MyClass
    param j Some other value
    public
    memberof MyClass
    */
void MyClass_publicFunction(struct MyClass* this, int j)
{
}

如果将 Doxygen 的EXTRACT_PRIVATE设置为 NO ,则只会记录公共部分。

查看配置文件中的 Exclude 系列标签。

由于您的源位于 ./src/目录中,因此一种选择可能是使用以下方法之一:

排除目录:

EXCLUDE = /src

排除文件名模式:

EXCLUDE_PATTERNS = *.c

这些是我头顶上的。您可能需要添加一些路径信息。我希望使用第一个或两个将产生在您的 C 文件中没有任何注释的输出。

作为旁注,您认为为您的"类"使用接口结构可以满足您的要求吗?

最新更新