c++ - 长 C++ 模板类型的 doxygen 换行符

标签 c++ templates doxygen

我有一个编译时递归类型,看起来有点像这样:

template <typename DataType, typename LeftNode, typename RightNode>
struct fixed_tree{
    fixed_tree(const DataType& data, const LeftNode& left, const RightNode& right) :     data_(data),left_(left),right_(right){}
    DataType data_;
    LeftNode left_;
    RightNode right_;
};

该类对各种叶节点有一些专门化,其中左/右节点为空,但这并不重要。

然后这个递归类作为参数传递给一个函数,创建一个有点长的类型名。

namespace some_namespace{
void some_function(int some_param0, int some_param1, fixed_tree<std::string,
                                                        fixed_tree<int, 
                                                            fixed_tree<float, void, void >,
                                                            fixed_tree<double, void, void > 
                                                            >,
                                                        fixed_tree<int,
                                                            fixed_tree<double,void,
                                                                fixed_tree<char, 
                                                                    fixed_tree<int, void,void>,
                                                                    fixed_tree<int, void,void>
                                                                > >,
                                                            void 
                                                            >   
                                                        > somewhat_lengthy_type
                );

当我通过 Doxygen 运行此函数时,函数文档严重溢出该行。

Overflowing line 1 Overflowing line 2

我的问题是:有没有办法在 doxygen 注释 block 之外提示/强制换行,以便文档中的外观类似于源代码中的内容。

我对以下解决方案不太感兴趣:

使用类型定义。尽管该示例不具有此特征,但实际类型形成了一种不言自明的语法,实际上有助于理解接口(interface)的功能。

自定义CSS。最好避免弄乱不是 doxygen 标签的东西。

最佳答案

IMO,这绝对是你应该输入的内容。在这么长的时间里包含整个类型是不好的做法。这样做可以解决 doxygen 问题,并制作一种更简单的类型(我可以很容易地看到当前类型中的拼写错误)。如果那棵树很深,您也应该通过引用传递。

在 doxygen 中,您可以使用更具体的标签,例如:

/**
 * @method name Docs.
 */

记录特定的代码。然而,这些通常会添加到自动生成的文档中,我不确定您是否可以完全覆盖它们。

很简单,它在代码/文档中看起来很丑这一事实应该是一个巨大的提示,它很丑,应该重构。

关于c++ - 长 C++ 模板类型的 doxygen 换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7877074/

相关文章:

c++ - 如何使用munmap自定义malloc

python - __init__.py 文件上的 doxygen 窒息

c++ - 实现 `to_xstring()` 来合并 `to_string()` 和 `to_wstring()`

doxygen 调用/调用图

c++ - DoxyGen 忽略函数

c++ - 引用变量/指针和类成员的问题 [C++]

c++ - 将对象作为参数传递

c++ - 指针未在 C++ 类中初始化

c++ - memcpy 和 C++ 类模板——如何使用它?

c++ - 具有无效函数类型或数组类型参数的 SFINAE?