我想提取注释,想知道它们来自哪些函数。我有很多这样的 C 文件,如下所示:
有输入:
void main()
{
//sdgs
call A;
/*
sdfgs
dfhdfh
*/
call b;
some code;
}
/* this function adds
something */
int add()
{
//sgsd
some code;
//more comments
some code;
}
输出应该是:
void main()
{
//sdgs
/*
sdfgs
dfhdfh
*/
}
/* this function adds
something */
int add()
{
//sgsd
//more comments
}
输入代码格式整齐,“功能代码”在下一行的 {
之后开始。
基本上,我只需要知道哪个“评论”来自哪个函数。它还应包括函数名称上方或其他地方的任何其他注释。 注意:这是不同的,因为顶层的函数名称应该在那里。
为了简化我的要求:
- 打印所有评论
- 在第一行检测包含
(
的 block ,在一到三行之后的第一列仅包含{
的单行并打印上面的行。
最佳答案
这对于正则表达式是不可能的,你需要编写一个小的 C 解析器。
为什么?
首先需要先替换宏。其次,因为函数定义有点“难以”放入正则表达式中。一些合法的函数定义:
int f() {}
const int f() {}
const char* f(int);
void f(double t);
void f(t,a) int t; int (*a)(float, char, char) {}
关于c - 仅从 C 代码中提取函数名称及其注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8050866/