小编alb*_*ert的帖子

Doxygen多行变量后注释

我已经用doxygen语法记录了一个结构。

//! This struct contains some info
typedef struct myInfo
{
    int variable1;  //!< This is a very long text about my variable. This
                    //!< is a very long text about my variable.
} myInfo;
Run Code Online (Sandbox Code Playgroud)

当我生成html / chm输出时,变量描述包含一个“ <”:“这是有关我的变量的很长的文本。这<是有关我的变量的很长的文本。”

我正在使用当前的doxygen 1.8.11,并且已将MULTILINE_CPP_IS_BRIEF设置为NO。

根据doxygen主页(请参阅“在成员后放置文档”),这应该可以工作,或者我是否缺少某些内容?

c++ doxygen

6
推荐指数
1
解决办法
2561
查看次数

在组织模式下编写doxygen文档

从1.8.0版开始,doxygen 支持 markdown.对于习惯的人来说org-mode,写入org-mode导出的选择markdown可能很有吸引力.由于markdown实施标准doxygen略有不同markdown,我想问:有没有人尝试过这个工作流程?用这种方式编写文档时应该记住什么?

c++ emacs markdown doxygen org-mode

6
推荐指数
0
解决办法
282
查看次数

Graphviz:更改子图簇内的节点间距

经验丰富但不是 Graphviz 专家。

我分享的示例代码和图像是更大图表的一部分,我将其拉出来以使问题和示例更清晰。

该图是按等级分开的并且从左到右流动。在图像示例中,您可以看到三个等级和节点空间很好,但我想在子图中收紧它们。

我已经尝试了六种语法选项,但它们都不允许我缩小子图中节点之间的垂直距离,而其他地方则不允许。

不确定如何将节点隔离到子图集群。

感谢您的任何帮助。

样本子图

digraph G {
    
    graph   [rankdir=LR, ranksep=.8, nodesep=.25];
    edge    [dir=forward, color=black];
    node    [shape=rectangle, fontsize=12, fontname="Times-Roman", height=.45];
    
    {edge [color=firebrick1]    v_Automobile    ->{"Locational"; "Consumption"; "Governmental"};};
    {edge [color=blue2]         v_Body          ->{"BioMetric"; "Networked IoT"; "Medical"};};
    {edge [color=darkviolet]    v_Citizen       ->{"Associative"; "Conversaional"; "Governmental"; "Political"};};
    {edge [color=lightskyblue]  v_Consumer      ->{"Consumption"; "Educational"; "Employment"; "Governmental"; "Locational"; "Medical"; "Transactional"};};
    {edge [color=crimson]       v_Home          ->{"Consumption"; "Emanative"; "Locational"; "Networked IoT"};};
    
    {edge [color=blue2]         "BioMetric"     ->{SP_Camera; SP_Apps; "CCTV"};};
    {edge [color=crimson]       "Consumption"   ->"Smart Meter"};
    {edge [color=blue2]         "Medical"       ->SP_Apps};
    {edge [color=darkviolet]    "Political"     ->"Ballot"}; …
Run Code Online (Sandbox Code Playgroud)

graphviz

6
推荐指数
1
解决办法
2286
查看次数

记录Powershell模块和脚本

随着Powershell 5引入OOP Classes支持,功能,脚本和模块的传统基于注释的 Powershell文档方法不再适用.Get-Help没有对类,方法或属性提供任何帮助,看起来它将保持这种方式.除此之外,Get-Help在尝试查找特定函数的信息时没有太多帮助,而实际上没有相关的模块或PowerShell脚本.

由于类对于更复杂的Powershell项目特别有用,因此对最新文档的需求比以往任何时候都更迫切.像DoxygenSandcastle帮助文件生成器这样的项目确实支持许多OO语言的帮助生成,但似乎无法处理Powershell代码.就让我们来看看在PoshBuild项目表明,它是针对.NET语言的项目,也和需要集成到Visual Studio生成过程,其中纯PowerShell代码没有.

还有PSDoc能够生成基于Get-Help输出的HTML或降价格式的模块文档,如果它支持类,这将是我想要的.

那么,如果有的话,我如何自动生成合理的文档

  1. .ps1脚本
  2. .psm1模块
  3. 我的Powershell代码中的类

使用基于注释的帮助文档语法?

documentation powershell

6
推荐指数
1
解决办法
1260
查看次数

Doxygen:如何包含 Markdown 页面来记录组

我有一个相当复杂的项目,我想使用 doxygen 来记录它。

我在记录代码方面没有任何问题,并且我还设法使用自定义README.md文件加上USE_MDFILE_AS_MAINPAGE = README.mdDoxyfile 中的“”指令来创建一个漂亮的首页。

我定义了几个组 ( @defgroup),它们在我的文档中显示为“模块”。

我想在每个组中添加一个“主页”,除了惯用的函数/变量/类型文档之外,还提供一般信息。

我尝试添加自定义MODULENAME.md文件以及@includedoc MODULENAME.md组定义中的匹配条目,它似乎有效(我看到几行,例如:“ Generating docs for page md_mcu_noitr_coro_README...”),但我找不到页面是否链接以及在哪里链接(我希望在“详细说明”中看到它) " 对于模块,如果我将一些文档内嵌在我放置 " @includedoc" 指令的位置,就会发生这种情况。

我的一个模块的片段是:

/**
 * @file coro.h
 * @brief definition of coroutine implementing functions.
 *
 * @date: Feb 8, 2018
 * @author: myself
 *
 * @defgroup coro "Coroutine implementation in plain 'C'."
 *
 * @includedoc mcu_noitr/coro/README.md
 * @{
 *
 */
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

注意:还有一点令人惊讶的是,我需要将整个路径放在我所在的位置Doxyfile,否则 doxygen 不会找到它,即使它位于包含@includedoc …

doxygen

6
推荐指数
1
解决办法
8594
查看次数

检查传递给函数的数组的大小

我在一个子程序编写为的大型程序中发现了一个错误:

program main
  implicit none

  real, dimension(6) :: x
  call f(x, 7)
  write (*,*) x
contains
  subroutine f(x, n)
    integer :: n
    real, dimension(n) :: x

    integer :: i

    do i = 1, n
      x(i) = 0.0
    end do
  end subroutine f
end program main
Run Code Online (Sandbox Code Playgroud)

即使代码显然存在错误,该程序也可以与ifort和gfortran一起运行并进行边界检查。是否可以捕获此类错误?

PS:这是生成可以正常运行的二进制文件的两个命令

  • ifort -check all main.f90 -o main
  • gfortran -fbounds-check main.f90 -o main

fortran

6
推荐指数
1
解决办法
175
查看次数

忽略doxygen注释块中的行

是否可以在doxygen评论块中包含doxygen会忽略的内容?顺便说一句,我们可以在doxygen注释块中发表评论吗?

背景:

我们将Fortran项目的代码内注释转换为doxygen-parseable格式,但是项目要求代码内注释中的内容由水平线描述.例如:

!> @brief Lorem ipsum dolor sit amet
!! ---------------------------------------------------------------------
!!
!! @param[in] p1  Description of p1
!! @param[in] p2  Description of p2
!! ---------------------------------------------------------------------
!!
!! More content here ....
!! ---------------------------------------------------------------------
!!
!! More content for another section
!! ---------------------------------------------------------------------
subroutine do_something(p1, p2)
  ! .... the code ...
end subroutine do_something
Run Code Online (Sandbox Code Playgroud)

是否有命令/语法我可以在这些行的前面加上,以便doxygen会忽略它们?希望是一个不引人注目且不影响评论可读性的文章.

我知道INPUT_FILTER可以用来在预处理脚本中链接的设置,但理想的解决方案是不依赖于其他脚本/工具的解决方案.

PS我很清楚很多人会认为这些水平线不必要和/或分散注意力.但是,这是由付款人颁布的要求,并不是我可以自由改变的.

documentation fortran comments doxygen

5
推荐指数
2
解决办法
3587
查看次数

`domain dot tld` 和 `domain dot tld dot` 一样吗?(TLD 后的点)

我似乎明白 TLD 后面的点无关紧要,例如:http : //example.com/somepage/ == http://example.com./somepage/(注意 TLD 后面的点)

我的问题是:情况总是这样吗?或者它是 DNS 还是任何依赖?换句话说,无论设置和域如何,域后面的额外点对每个人都有效吗?(example.com., localhost., mycomputer.lan., 127.0.0.1., 等等...)

额外的问题:为什么允许额外的点?

谢谢

dns tld

5
推荐指数
1
解决办法
1044
查看次数

使用 Perl 拆分浮点数

为什么我使用 split 会丢失精度?我的目标是只得到小数部分,全部。

$a = 123456789.123456789;
@b = split(/\./, $a);
$baseDec = "." . $b[1];
Run Code Online (Sandbox Code Playgroud)

上面给出了 $baseDec == .123457

但这给出了正确的精度:这是正确的方法吗? 更正:这给出了同样糟糕的精度!我没有正确测试代码。对不起!

$a = 123456789.123456789;
@b = split(/\./, $a);
$baseInt = $b[0];
$baseDec = $a - $baseInt;
Run Code Online (Sandbox Code Playgroud)

我应该使用 Math::BigFloat 吗?

编辑: $a 应该是一个字符串$a = "123456789.123456789";,然后原始代码有效。在我弄清楚如何让我的 Perl 与 longdouble 一起工作之前,我无法测试原始问题。答案似乎是我失去了精度,因为 $a 以双精度形式存储(52 位 ~ 15 位十进制数字,如下面@Ben 所述)。print $a123456789.123457.

floating-point precision perl split

5
推荐指数
1
解决办法
2305
查看次数

如何标记@ref 引用的结尾?

我正在使用 Doxygen 来记录 C++ 代码,并且正在为代码编写大量 Doxygen 文档。在一个地方,我在代码中制作了一个组列表,并希望它显示如下:

我的文档来源如下所示:

- @ref CM:控制一切的模块
- @ref SM:作为@CM 从属的模块

但是,问题:Doxygen 似乎将参考名称读取为CM:,而不是CM,因此找不到参考。所以,不知何故,我需要告诉 Doxygen 参考名称在哪里结束。(例如,如果我使用 Bash,并且想要回显带有“s”作为后缀的变量字符串,我会使用echo "${NOUN}s".)

作为一种解决方法,我可以在名称和后面的冒号之间添加一个空格,但这会使生成的文档更难阅读,我想避免它。

Special Commands 下,Doxygen 手册包含以下听起来充满希望的信息:

一些命令有一个或多个参数。每个参数都有一定的范围:

  • 如果使用 <sharp> 大括号,则参数是单个单词。
  • 如果使用(圆)大括号,则参数将扩展到找到命令的行的末尾。
  • 如果使用 {curly} 大括号,则参数会扩展到下一段。段落由空行或节指示符分隔。

好的,这一切都很好,但是文档没有说,我也想不通,这些大括号应该放在哪里。仅围绕争论?围绕整个命令和参数?两者都不起作用,我想不出一个可行的替代方案。

那么,我如何指示 Doxygen 引用名称的结尾?如果大括号是答案,它们会去哪里?

c++ documentation doxygen

5
推荐指数
2
解决办法
747
查看次数