【问题标题】:Doyxgen onetime macro expansion / expansion commandDoxygen 一次宏扩展/扩展命令
【发布时间】:2021-07-17 09:19:46
【问题描述】:

我有一些类似以下示例的代码:

/** @file HelloPi.c */

/** The definition of pi */
#define PI 3.1415

/** @brief The main function.
 *  @details Prints the value of #PI, which is actual defined as 3.1415. */
void main()
{
  printf("The value of pi is %f\n",PI);
}

在我的 doxygen 文档中,我一般不希望对 PI(和其他定义)进行宏扩展。 但在文档中的一段中,我需要 pi 的值(例如 @details 对 main 函数的描述)。

是否有可能使用命令或其他东西在文档的这一部分展开宏?类似/** @details ...the value of #PI is $(PI).*/

我只知道适用于整个文档的内置 MACRO_EXPANSION 标签:https://www.doxygen.nl/manual/preprocessing.html :-/

感谢您的帮助:)
一月

编辑: 添加另一个可能更好地描述我的问题的示例:

/** @file ErrorHandling.c */


#define ERR_CODE_POWERUNIT 1001 ///< Error in power unit */
            /** @page errors
             *  [value of ERR_CODE_POWERUNIT ] means \copybrief ERR_CODE_POWERUNIT */

void errHandler(int error)
{
  if(error=ERR_CODE_POWERUNIT)
    printf("Error %d occur\n",ERR_CODE_POWERUNIT);
}

在我想要的文档中: "1001 表示功率单元错误"

【问题讨论】:

  • doxygen 的哪个版本?
  • 版本是 1.18.13(debian LTS 版本),但可以更新到 1.9.1。
  • 当然建议这样做。

标签: macros doxygen preprocessor code-documentation variable-expansion


【解决方案1】:

在 doxygen 中,不可能对文档中的预定义变量(仅)进行转换。 您在文档中使用了环境变量 $(PI),但这非常麻烦,因为您每次都必须设置环境变量。

更好的解决方案是使用ALIASES,例如:

ALIASES += pi=3.1415

ALIASES +\= "The value of PI = 3.14159265359..."

您可以使用它定义可在文档中使用的命令\pi,并将替换为别名中的文本/命令。

/** @details ...the value of #PI is \pi.*/

会导致类似(按头:

  ...the value of #PI is 3.1415

【讨论】:

  • 嗨 Albert,当我使用别名时,我总是引用配置文件中的值,而不是代码中的值。所以我需要在源代码和配置中定义我的宏。另一个例子:PI 不是 pi,而是向用户显示的错误代码:在代码中我有 #define POWER_ERROR 1001 并在代码中使用宏。但是用户只能得到 1001。如果能得到 1001 表示“电源单元错误”的文档,那就太好了。
  • 确实我忘了说你必须把信息加倍(我想过但忘了写下来)。我还没有得到评论的第二部分,文本“电源单元中的错误”也必须可用,所以为什么不将它添加到别名中,就像 ALIASES += err_1001="1001 i.e. error in the power unit"ALIASES += err_1001="error in the power unit" 一样并使用在文档中\err_1001
  • 有可能。无论如何,你需要写两次。一次在代码中一次在其他地方。我想我会采用以下方式:``` /** @page errors 1001 表示 \copybrief ERR_CODE_POWERUNIT */ ```(上面的示例)。一切都在一个地方/文件。唯一要做的就是将“1001”每手写入文档页面。所以复制和粘贴其他错误代码需要一点点注意:) 但其他开发人员不需要查看不同的文件。也许是最简单的方法。
  • 感谢您的帮助,阿尔伯特! :)
  • 文本的 copybrief 解决方案看起来非常有效。想想qyou也可能成功wiltALIASES +="ERR{1}="\1 means \copybrief ERR_CODE_\1并在文档中使用:\ERR{1001}
猜你喜欢
  • 2014-02-24
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 2020-09-27
  • 2016-09-07
  • 2015-12-19
相关资源
最近更新 更多