将标记内容直接放入doxygen的Python类
因此,我想制作一个Python软件,该软件会自动提取.h文件中的注释标签并将其直接解析为Python类。 我目前使用doxygen将标签输出到.xml文件中。问题在于.xml文件是动态的,因此很难阅读。
- 我可以用来做出动态的最佳策略和 可靠的.xml读取器?
- 是否已经有一个工具?
- Doxygen甚至是解析标签的最合适的工具吗?
感谢您的时间。
编辑:我将提供示例以更好地阐明我的问题
,让我们从带有此标头文件的标头文件开始,
/**----------------------------------------------------------------------------
*
* @file LIBC_String.h
*
* @copyright Random
*
* @brief This class defines several functions to manipulate C strings and
* memory.
*
*/
#ifndef _LIBC_STRING_H_
#define _LIBC_STRING_H_
/*-----------------------------------------------------------------------------
* Include Section:
*----------------------------------------------------------------------------*/
#include "LIBC_basictypes.h"
/*-----------------------------------------------------------------------------
* Define Section:
*----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
* Typedef Section:
*----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
* Prototype Section:
*----------------------------------------------------------------------------*/
/**
*
* @brief This function copies a string.
*
* @author Random
*
* @pre NA
*
* @post NA
*
* @param [out] dest 'int8_t*' Represents the destination string.
*
* @param [in] src 'const int8_t*' Represents the string to be copied.
*
* @return 'int8_t' Pointer to the destination string.
*
* @constraints
* - The destination memory area and source memory area should not overlap.
* - The destination memory area should be large enough to contain the 'src'
* string.
* - The destination memory area should be in modifiable storage space and
* within the address space of the program.
* - The *src* should be a NULL terminated string.
* - The *src* and *dest* pointers should not be NULL.
* - This function is only available if FEATURE_LIBC_LEGACY_STR_ENABLED and
* FEATURE_LIBC_UNSAFE_STR_ENABLED symbols are defined.
*
* @req LIBC_strcpy shall copy the string pointed by *src* into the array
* pointed by *dest*, including the terminating NULL character.
* @derived FALSE
*
* @req LIBC_strcpy shall return a pointer to *dest*.
* @derived FALSE
*/
int8_t* LIBC_strcpy(int8_t* dest, const int8_t* src);
/**
*
* @brief This function concatenate strings.
*
* @author Random
*
* @pre NA
*
* @post NA
*
* @param [out] dst 'int8_t*' Represents the string to where the characters
* are appended.
*
* @param [in] src 'const int8_t*' Represents the string from where the
* characters are copied.
*
* @return 'int8_t*' Pointer to the destination string.
*
* @constraints
* - The destination memory area should be large enough to contain the
* concatenated resulting string, including the additional NULL character.
* - The destination memory area and source memory area should not overlap.
* - The destination memory area should be in modifiable storage space and
* within the address space of the program.
* - The *src* and *dst* pointers should not be NULL.
* - The *src* should be a NULL terminated string.
* - This function is only available if FEATURE_LIBC_LEGACY_STR_ENABLED and
* FEATURE_LIBC_UNSAFE_STR_ENABLED symbols are defined.
*
* @req LIBC_strcat shall append the string pointed by *src* (including the
* terminating NULL character) to the end of the string pointed by *dst*.
* @derived FALSE
*
* @req The initial character of *src* shall overwrite the existing
* terminating NULL character of *dst*.
* @derived TRUE
* @rationale This function concatenates the src and dest strings
* in a single string without any separation.
*
* @req LIBC_strcat shall return a pointer to *dst*.
*
*/
int8_t* LIBC_strcat(int8_t* dst, const int8_t* src);
必须获得标签内容,例如:
- 的作者
- 参数
- 每个功能的每个函数返回
- 等...
我 Python课程。我制作了一种解析XML输出的Python算法,但它不是动态的,这意味着它仅适用于此标头文件。 此标头文件将使用doxygen
我假设我必须使用libc__string_8h.8h.xml文件 该文件具有以下结构:
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.4" xml:lang="en-US">
<compounddef id="LIBC__String_8h" kind="file" language="C++">
<compoundname>LIBC_String.h</compoundname>
<includes local="yes">LIBC_basictypes.h</includes>
<incdepgraph>
<node id="1">
<label>LIBC_String.h</label>
<link refid="LIBC__String_8h"/>
<childnode refid="2" relation="include">
</childnode>
</node>
<node id="2">
<label>LIBC_basictypes.h</label>
</node>
</incdepgraph>
<sectiondef kind="func">
<memberdef kind="function" id="LIBC__String_8h_1aedec0de3ce73e0b5d9c062c402f96a8b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type>int8_t *</type>
<definition>int8_t * LIBC_strcpy</definition>
<argsstring>(int8_t *dest, const int8_t *src)</argsstring>
<name>LIBC_strcpy</name>
<param>
<type>int8_t *</type>
<declname>dest</declname>
</param>
<param>
<type>const int8_t *</type>
<declname>src</declname>
</param>
<briefdescription>
<para>This function copies a string. </para>
</briefdescription>
<detaileddescription>
<para><simplesect kind="author"><para>Random</para>
</simplesect>
<simplesect kind="pre"><para>NA</para>
</simplesect>
<simplesect kind="post"><para>NA</para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="out">dest</parametername>
</parameternamelist>
<parameterdescription>
<para>'int8_t*' Represents the destination string.</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">src</parametername>
</parameternamelist>
<parameterdescription>
<para>'const int8_t*' Represents the string to be copied.</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>'int8_t' Pointer to the destination string.</para>
</simplesect>
<xrefsect id="constraints_1_constraints000001"><xreftitle>Constraint</xreftitle><xrefdescription><para><itemizedlist>
<listitem><para>The destination memory area and source memory area should not overlap.</para>
</listitem><listitem><para>The destination memory area should be large enough to contain the 'src' string.</para>
</listitem><listitem><para>The destination memory area should be in modifiable storage space and within the address space of the program.</para>
</listitem><listitem><para>The <emphasis>src</emphasis> should be a NULL terminated string.</para>
</listitem><listitem><para>The <emphasis>src</emphasis> and <emphasis>dest</emphasis> pointers should not be NULL.</para>
</listitem><listitem><para>This function is only available if FEATURE_LIBC_LEGACY_STR_ENABLED and FEATURE_LIBC_UNSAFE_STR_ENABLED symbols are defined.</para>
</listitem></itemizedlist>
</para>
</xrefdescription></xrefsect></para>
<para><xrefsect id="req_1_req000001"><xreftitle>Requirement</xreftitle><xrefdescription><para>LIBC_strcpy shall copy the string pointed by <emphasis>src</emphasis> into the array pointed by <emphasis>dest</emphasis>, including the terminating NULL character. </para>
</xrefdescription></xrefsect><xrefsect id="derived_1_derived000001"><xreftitle>Derived</xreftitle><xrefdescription><para>FALSE</para>
</xrefdescription></xrefsect></para>
<para><xrefsect id="req_1_req000002"><xreftitle>Requirement</xreftitle><xrefdescription><para>LIBC_strcpy shall return a pointer to <emphasis>dest</emphasis>. </para>
</xrefdescription></xrefsect><xrefsect id="derived_1_derived000002"><xreftitle>Derived</xreftitle><xrefdescription><para>FALSE </para>
</xrefdescription></xrefsect></para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="LIBC_String.h" line="67" column="8" declfile="LIBC_String.h" declline="67" declcolumn="8"/>
</memberdef>
<memberdef kind="function" id="LIBC__String_8h_1affff6d4a36b7e9a48fff363785d02235" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type>int8_t *</type>
<definition>int8_t * LIBC_strcat</definition>
<argsstring>(int8_t *dst, const int8_t *src)</argsstring>
<name>LIBC_strcat</name>
<param>
<type>int8_t *</type>
<declname>dst</declname>
</param>
<param>
<type>const int8_t *</type>
<declname>src</declname>
</param>
<briefdescription>
<para>This function concatenate strings. </para>
</briefdescription>
<detaileddescription>
<para><simplesect kind="author"><para>Random</para>
</simplesect>
<simplesect kind="pre"><para>NA</para>
</simplesect>
<simplesect kind="post"><para>NA</para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="out">dst</parametername>
</parameternamelist>
<parameterdescription>
<para>'int8_t*' Represents the string to where the characters are appended.</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">src</parametername>
</parameternamelist>
<parameterdescription>
<para>'const int8_t*' Represents the string from where the characters are copied.</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>'int8_t*' Pointer to the destination string.</para>
</simplesect>
<xrefsect id="constraints_1_constraints000002"><xreftitle>Constraint</xreftitle><xrefdescription><para><itemizedlist>
<listitem><para>The destination memory area should be large enough to contain the concatenated resulting string, including the additional NULL character.</para>
</listitem><listitem><para>The destination memory area and source memory area should not overlap.</para>
</listitem><listitem><para>The destination memory area should be in modifiable storage space and within the address space of the program.</para>
</listitem><listitem><para>The <emphasis>src</emphasis> and <emphasis>dst</emphasis> pointers should not be NULL.</para>
</listitem><listitem><para>The <emphasis>src</emphasis> should be a NULL terminated string.</para>
</listitem><listitem><para>This function is only available if FEATURE_LIBC_LEGACY_STR_ENABLED and FEATURE_LIBC_UNSAFE_STR_ENABLED symbols are defined.</para>
</listitem></itemizedlist>
</para>
</xrefdescription></xrefsect></para>
<para><xrefsect id="req_1_req000003"><xreftitle>Requirement</xreftitle><xrefdescription><para>LIBC_strcat shall append the string pointed by <emphasis>src</emphasis> (including the terminating NULL character) to the end of the string pointed by <emphasis>dst</emphasis>. </para>
</xrefdescription></xrefsect><xrefsect id="derived_1_derived000003"><xreftitle>Derived</xreftitle><xrefdescription><para>FALSE</para>
</xrefdescription></xrefsect></para>
<para><xrefsect id="req_1_req000004"><xreftitle>Requirement</xreftitle><xrefdescription><para>The initial character of <emphasis>src</emphasis> shall overwrite the existing terminating NULL character of <emphasis>dst</emphasis>. </para>
</xrefdescription></xrefsect><xrefsect id="derived_1_derived000004"><xreftitle>Derived</xreftitle><xrefdescription><para>TRUE </para>
</xrefdescription></xrefsect><xrefsect id="rationale_1_rationale000001"><xreftitle>Rationale</xreftitle><xrefdescription><para>This function concatenates the src and dest strings <linebreak/>
in a single string without any separation.</para>
</xrefdescription></xrefsect></para>
<para><xrefsect id="req_1_req000005"><xreftitle>Requirement</xreftitle><xrefdescription><para>LIBC_strcat shall return a pointer to <emphasis>dst</emphasis>.</para>
</xrefdescription></xrefsect></para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="LIBC_String.h" line="111" column="8" declfile="LIBC_String.h" declline="111" declcolumn="8"/>
</memberdef>
</sectiondef>
<briefdescription>
<para>This class defines several functions to manipulate C strings and memory. </para>
</briefdescription>
<detaileddescription>
<para><hruler/>
</para>
<para><simplesect kind="copyright"><para>Random </para>
</simplesect>
</para>
</detaileddescription>
<location file="LIBC_String.h"/>
</compounddef>
</doxygen>
我的主要问题是:
- 如果我更改标头文件,则XML的结构将更改
- 我必须制作一个应用程序,该应用程序接受动态标头文件输入并获取这些文件的标签内容,
什么是最好的做到这一点的方法?
So I want to make a python software that, automatically, extracts the tags of comments inside a .h file and parses them directly into python classes.
I'm currently using Doxygen to output the tags into a .xml file. The problem is that the .xml file is dynamic which makes it difficult to read.
- What is the best strategy that I can use to make a dynamic and
reliable .xml reader? - Is there already a tool that does this?
- Is Doxygen even the most appropriate tool to parse the tags?
Thanks for your time.
EDIT: I will provide examples to better clarify my problem
Let's start with a header file
/**----------------------------------------------------------------------------
*
* @file LIBC_String.h
*
* @copyright Random
*
* @brief This class defines several functions to manipulate C strings and
* memory.
*
*/
#ifndef _LIBC_STRING_H_
#define _LIBC_STRING_H_
/*-----------------------------------------------------------------------------
* Include Section:
*----------------------------------------------------------------------------*/
#include "LIBC_basictypes.h"
/*-----------------------------------------------------------------------------
* Define Section:
*----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
* Typedef Section:
*----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
* Prototype Section:
*----------------------------------------------------------------------------*/
/**
*
* @brief This function copies a string.
*
* @author Random
*
* @pre NA
*
* @post NA
*
* @param [out] dest 'int8_t*' Represents the destination string.
*
* @param [in] src 'const int8_t*' Represents the string to be copied.
*
* @return 'int8_t' Pointer to the destination string.
*
* @constraints
* - The destination memory area and source memory area should not overlap.
* - The destination memory area should be large enough to contain the 'src'
* string.
* - The destination memory area should be in modifiable storage space and
* within the address space of the program.
* - The *src* should be a NULL terminated string.
* - The *src* and *dest* pointers should not be NULL.
* - This function is only available if FEATURE_LIBC_LEGACY_STR_ENABLED and
* FEATURE_LIBC_UNSAFE_STR_ENABLED symbols are defined.
*
* @req LIBC_strcpy shall copy the string pointed by *src* into the array
* pointed by *dest*, including the terminating NULL character.
* @derived FALSE
*
* @req LIBC_strcpy shall return a pointer to *dest*.
* @derived FALSE
*/
int8_t* LIBC_strcpy(int8_t* dest, const int8_t* src);
/**
*
* @brief This function concatenate strings.
*
* @author Random
*
* @pre NA
*
* @post NA
*
* @param [out] dst 'int8_t*' Represents the string to where the characters
* are appended.
*
* @param [in] src 'const int8_t*' Represents the string from where the
* characters are copied.
*
* @return 'int8_t*' Pointer to the destination string.
*
* @constraints
* - The destination memory area should be large enough to contain the
* concatenated resulting string, including the additional NULL character.
* - The destination memory area and source memory area should not overlap.
* - The destination memory area should be in modifiable storage space and
* within the address space of the program.
* - The *src* and *dst* pointers should not be NULL.
* - The *src* should be a NULL terminated string.
* - This function is only available if FEATURE_LIBC_LEGACY_STR_ENABLED and
* FEATURE_LIBC_UNSAFE_STR_ENABLED symbols are defined.
*
* @req LIBC_strcat shall append the string pointed by *src* (including the
* terminating NULL character) to the end of the string pointed by *dst*.
* @derived FALSE
*
* @req The initial character of *src* shall overwrite the existing
* terminating NULL character of *dst*.
* @derived TRUE
* @rationale This function concatenates the src and dest strings
* in a single string without any separation.
*
* @req LIBC_strcat shall return a pointer to *dst*.
*
*/
int8_t* LIBC_strcat(int8_t* dst, const int8_t* src);
With this header file I have to get tag content like:
- Author
- Params for every function
- Return for every function
- Etc...
This content will have to be stored in Python Classes. I made a python algorithm that parses the xml output but it is not dynamic, meaning that it only works with this header file.
This header file will output the following xml files with doxygen
I'm assuming that I have to use the LIBC__String_8h.xml file
This file has the following structure:
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.4" xml:lang="en-US">
<compounddef id="LIBC__String_8h" kind="file" language="C++">
<compoundname>LIBC_String.h</compoundname>
<includes local="yes">LIBC_basictypes.h</includes>
<incdepgraph>
<node id="1">
<label>LIBC_String.h</label>
<link refid="LIBC__String_8h"/>
<childnode refid="2" relation="include">
</childnode>
</node>
<node id="2">
<label>LIBC_basictypes.h</label>
</node>
</incdepgraph>
<sectiondef kind="func">
<memberdef kind="function" id="LIBC__String_8h_1aedec0de3ce73e0b5d9c062c402f96a8b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type>int8_t *</type>
<definition>int8_t * LIBC_strcpy</definition>
<argsstring>(int8_t *dest, const int8_t *src)</argsstring>
<name>LIBC_strcpy</name>
<param>
<type>int8_t *</type>
<declname>dest</declname>
</param>
<param>
<type>const int8_t *</type>
<declname>src</declname>
</param>
<briefdescription>
<para>This function copies a string. </para>
</briefdescription>
<detaileddescription>
<para><simplesect kind="author"><para>Random</para>
</simplesect>
<simplesect kind="pre"><para>NA</para>
</simplesect>
<simplesect kind="post"><para>NA</para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="out">dest</parametername>
</parameternamelist>
<parameterdescription>
<para>'int8_t*' Represents the destination string.</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">src</parametername>
</parameternamelist>
<parameterdescription>
<para>'const int8_t*' Represents the string to be copied.</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>'int8_t' Pointer to the destination string.</para>
</simplesect>
<xrefsect id="constraints_1_constraints000001"><xreftitle>Constraint</xreftitle><xrefdescription><para><itemizedlist>
<listitem><para>The destination memory area and source memory area should not overlap.</para>
</listitem><listitem><para>The destination memory area should be large enough to contain the 'src' string.</para>
</listitem><listitem><para>The destination memory area should be in modifiable storage space and within the address space of the program.</para>
</listitem><listitem><para>The <emphasis>src</emphasis> should be a NULL terminated string.</para>
</listitem><listitem><para>The <emphasis>src</emphasis> and <emphasis>dest</emphasis> pointers should not be NULL.</para>
</listitem><listitem><para>This function is only available if FEATURE_LIBC_LEGACY_STR_ENABLED and FEATURE_LIBC_UNSAFE_STR_ENABLED symbols are defined.</para>
</listitem></itemizedlist>
</para>
</xrefdescription></xrefsect></para>
<para><xrefsect id="req_1_req000001"><xreftitle>Requirement</xreftitle><xrefdescription><para>LIBC_strcpy shall copy the string pointed by <emphasis>src</emphasis> into the array pointed by <emphasis>dest</emphasis>, including the terminating NULL character. </para>
</xrefdescription></xrefsect><xrefsect id="derived_1_derived000001"><xreftitle>Derived</xreftitle><xrefdescription><para>FALSE</para>
</xrefdescription></xrefsect></para>
<para><xrefsect id="req_1_req000002"><xreftitle>Requirement</xreftitle><xrefdescription><para>LIBC_strcpy shall return a pointer to <emphasis>dest</emphasis>. </para>
</xrefdescription></xrefsect><xrefsect id="derived_1_derived000002"><xreftitle>Derived</xreftitle><xrefdescription><para>FALSE </para>
</xrefdescription></xrefsect></para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="LIBC_String.h" line="67" column="8" declfile="LIBC_String.h" declline="67" declcolumn="8"/>
</memberdef>
<memberdef kind="function" id="LIBC__String_8h_1affff6d4a36b7e9a48fff363785d02235" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type>int8_t *</type>
<definition>int8_t * LIBC_strcat</definition>
<argsstring>(int8_t *dst, const int8_t *src)</argsstring>
<name>LIBC_strcat</name>
<param>
<type>int8_t *</type>
<declname>dst</declname>
</param>
<param>
<type>const int8_t *</type>
<declname>src</declname>
</param>
<briefdescription>
<para>This function concatenate strings. </para>
</briefdescription>
<detaileddescription>
<para><simplesect kind="author"><para>Random</para>
</simplesect>
<simplesect kind="pre"><para>NA</para>
</simplesect>
<simplesect kind="post"><para>NA</para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="out">dst</parametername>
</parameternamelist>
<parameterdescription>
<para>'int8_t*' Represents the string to where the characters are appended.</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">src</parametername>
</parameternamelist>
<parameterdescription>
<para>'const int8_t*' Represents the string from where the characters are copied.</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>'int8_t*' Pointer to the destination string.</para>
</simplesect>
<xrefsect id="constraints_1_constraints000002"><xreftitle>Constraint</xreftitle><xrefdescription><para><itemizedlist>
<listitem><para>The destination memory area should be large enough to contain the concatenated resulting string, including the additional NULL character.</para>
</listitem><listitem><para>The destination memory area and source memory area should not overlap.</para>
</listitem><listitem><para>The destination memory area should be in modifiable storage space and within the address space of the program.</para>
</listitem><listitem><para>The <emphasis>src</emphasis> and <emphasis>dst</emphasis> pointers should not be NULL.</para>
</listitem><listitem><para>The <emphasis>src</emphasis> should be a NULL terminated string.</para>
</listitem><listitem><para>This function is only available if FEATURE_LIBC_LEGACY_STR_ENABLED and FEATURE_LIBC_UNSAFE_STR_ENABLED symbols are defined.</para>
</listitem></itemizedlist>
</para>
</xrefdescription></xrefsect></para>
<para><xrefsect id="req_1_req000003"><xreftitle>Requirement</xreftitle><xrefdescription><para>LIBC_strcat shall append the string pointed by <emphasis>src</emphasis> (including the terminating NULL character) to the end of the string pointed by <emphasis>dst</emphasis>. </para>
</xrefdescription></xrefsect><xrefsect id="derived_1_derived000003"><xreftitle>Derived</xreftitle><xrefdescription><para>FALSE</para>
</xrefdescription></xrefsect></para>
<para><xrefsect id="req_1_req000004"><xreftitle>Requirement</xreftitle><xrefdescription><para>The initial character of <emphasis>src</emphasis> shall overwrite the existing terminating NULL character of <emphasis>dst</emphasis>. </para>
</xrefdescription></xrefsect><xrefsect id="derived_1_derived000004"><xreftitle>Derived</xreftitle><xrefdescription><para>TRUE </para>
</xrefdescription></xrefsect><xrefsect id="rationale_1_rationale000001"><xreftitle>Rationale</xreftitle><xrefdescription><para>This function concatenates the src and dest strings <linebreak/>
in a single string without any separation.</para>
</xrefdescription></xrefsect></para>
<para><xrefsect id="req_1_req000005"><xreftitle>Requirement</xreftitle><xrefdescription><para>LIBC_strcat shall return a pointer to <emphasis>dst</emphasis>.</para>
</xrefdescription></xrefsect></para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="LIBC_String.h" line="111" column="8" declfile="LIBC_String.h" declline="111" declcolumn="8"/>
</memberdef>
</sectiondef>
<briefdescription>
<para>This class defines several functions to manipulate C strings and memory. </para>
</briefdescription>
<detaileddescription>
<para><hruler/>
</para>
<para><simplesect kind="copyright"><para>Random </para>
</simplesect>
</para>
</detaileddescription>
<location file="LIBC_String.h"/>
</compounddef>
</doxygen>
My main problem is:
- If I change the header file, the structure of the xml will change
- I have to make an application that accepts dynamic header file inputs and get the tag contents of those files
What is the best approach to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论