【发布时间】:2018-05-09 01:38:21
【问题描述】:
我编写了一个小型矩阵库,作为我正在进行的一个更大项目的一部分。零成本转置很重要,所以我使用/滥用了工会。代码本身可以正常工作(在下面提供),但是在使用 Doxygen 进行文档处理时,它将struct matrix_r 和 union matrix_r 的所有文档合并到一个项目中。也就是说,只有struct matrix_r 和struct matrix_c 的生成页面,但是这两个页面将matrix_r 和matrix_c 描述为联合,具有连接的@brief 文本和连接的属性(来自结构和联合声明)。
我对 Doxygen 非常非常陌生,但到目前为止我一直无法弄清楚如何让它将这些视为单独的文档项。有什么想法吗?
#include <stddef.h>
/// @brief internal stuct for row-major matrices
struct matrix_r {
int *data; ///< raw pointer backing matrix
size_t m; ///< the number of rows
size_t n; ///< the number of cols
};
/// @brief internal struct for col-major matrices
struct matrix_c {
int *data; ///< raw pointer backing matrix
size_t n; ///< the number of cols
size_t m; ///< the number of rows
};
/// @brief user-facing typedef for row-major matrices
typedef union {
struct matrix_r id; ///< identity view of matrix
struct matrix_c tr; ///< transposed view of matrix
int* flat; ///< flattened view of matrix
} matrix_r;
/// @brief user-facing typedef for row-major matrices
typedef union {
struct matrix_c id; ///< identity view of matrix
struct matrix_r tr; ///< transposed view of matrix
int* flat; ///< flattened view of matrix
} matrix_c;
【问题讨论】:
-
虽然 Doxygen 可能是错误的(而且我不知道 Doxygen),但您正在制作混淆 C,具有
struct matrix_r和类型matrix_r。我强烈反对这样做。 -
睡过之后,我会承认这一点——我的初衷是
struct matrix_r永远不会被用户直接使用,因此隐藏它的名字来阻止它。但是,我现在已将结构重命名为matrix_r_repr,这仍然通过repr表明它不用于外部消耗,也消除了我的 Doxygen 问题。 -
我刚刚在这里对另一个问题给出了相同的评论 :-) (stackoverflow.com/questions/47487387/…)