Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c语言中插入和编辑注释_C_Doxygen - Fatal编程技术网

在c语言中插入和编辑注释

在c语言中插入和编辑注释,c,doxygen,C,Doxygen,现在我有了一堆已经插入注释的C源文件,它们的格式是函数的/*********/,短语和变量的/*../。我的任务是用doxygen记录这些文件。问题很明显:doxygen不支持注释格式。因此,我必须找到一种方法来修改文件的注释格式,并添加其他进一步的注释 我试过使用gvim和doxygen工具包。我只能插入一些简单的东西,比如 /** * @brief */ 仅适用于功能。所以我想知道是否有一种方法可以让我修改已经存在的评论。提前感谢您。对于Vim: \/\*\*\*\*\*\_.\{-}\

现在我有了一堆已经插入注释的C源文件,它们的格式是函数的
/*********/
,短语和变量的
/*../
。我的任务是用doxygen记录这些文件。问题很明显:doxygen不支持注释格式。因此,我必须找到一种方法来修改文件的注释格式,并添加其他进一步的注释

我试过使用gvim和doxygen工具包。我只能插入一些简单的东西,比如

/**
* @brief 
*/
仅适用于功能。所以我想知道是否有一种方法可以让我修改已经存在的评论。提前感谢您。

对于Vim:

\/\*\*\*\*\*\_.\{-}\*\*\*\*\*\/
发现

/*****
abcdef
*****/
void main()
{
    int a = 0;
    /**** abcdef ****/
}

/***** abcdef *****/
void function()
{
}

/*****
abcdef
abcdef
abcdef
*****/
void function2()
{
}
可轻松转换为子表达式替换VIM命令:

:1,$ s/\(\/\*\*\*\*\*\)\(\_.\{-}\)\(\*\*\*\*\*\/\)/\/\*\*\2\*\//g
:) 也许python/grep-awk在这里会是一个更好的选择


编辑:注释-上述解决方案严格基于/****模式(即/****中的“*”数)

当然,您可以修改现有注释。你是在问是否有一个自动化的工具来做这件事?你需要修改现有的评论!您是否考虑过/尝试过任何shell命令/脚本方法,如使用grep/awk等?在vim中,如果没有插件,可能会很困难,但是使用grep/awk/sed,特别是对于一堆文件,可能会容易得多。它还取决于现有的命令布局。例如,如果在/******和******/之间有单行或多行文本等。是的,这是我的问题。一个工具(一个像vim这样的编辑器,一个像eclipse这样的编译器),它有这样的功能。它看起来像是你在寻找一个任意的,非标准的,不受支持的格式,并自动将它转换成Doxygen风格?这似乎不太可能——您必须使用一些工具,如@alienfromouterspace,这是最有可能的。非常感谢您提供的解决方案!实际上,我也在尝试搜索和替换vim!然而,我没有得到一个好的结果。例如,对于像/*abcdef*/这样的注释,我想把它改成/**abcdef*/,我使用了命令:s#/*.\35;/**g,这是不对的,我知道你用“\”来转义“/”,但是对于每个*都应该有一个“\”?我要么不理解({.\{-})部分,也就是开头的“1”。你能给我解释一下吗。匹配任何新行和字符,\{-}使匹配非贪婪(限制版本的*..如果您在正则表达式中使用()创建子模式,那么在替换中,您可以使用部分,将它们引用为\1、\2等\0表示完全匹配的字符串(忽略子模式)下面是一个类似的讨论,我使用了一种不同形式的替代命令行范围。例如-:1:$s/../…/g是我很快做的测试。我想你并不真的需要它们,因为你正在全部替代。好的,我知道了。这或多或少是我想要的。非常感谢!)