是否也可以通过 ctags 获取函数结束行号
"ctags -x --c-kinds=f filename.c"
上面的命令列出了函数定义的起始行号。想要一种获取函数结束行号的方法。
其他方法:
awk 'NR > first && /^}$/ { print NR; exit }' first=$FIRST_LINE filename.c
这需要正确格式化代码
例子:
文件名.c
1 #include<stdio.h>
2 #include<stdlib.h>
3 int main()
4 {
5 const char *name;
6
7 int a=0
8 printf("name");
9 printf("sssss: %s",name);
10
11 return 0;
12 }
13
14 void code()
15 {
16 printf("Code \n");
17 }
18
19 int code2()
20 {
21 printf("code2 \n");
22 return 1
23 }
24
输入:文件名和函数起始行号。
Example:
Input: filename.c 3
Output: 12
Input : filename.c 19
Output : 23
有没有更好/简单的方法来做到这一点?
最佳答案
Universal-ctags( https://ctags.io ) 的 C/C++ 解析器有 end: 字段。
jet@localhost tmp]$ cat -n foo.c
1 int
2 main( void )
3 {
4
5 }
6
7 int
8 bar (void)
9 {
10
11 }
12
13 struct x {
14 int y;
15 };
16
[jet@localhost tmp]$ ~/var/ctags/ctags --fields=+ne -o - --sort=no foo.c
main foo.c /^main( void )$/;" f line:2 typeref:typename:int end:5
bar foo.c /^bar (void)$/;" f line:8 typeref:typename:int end:11
x foo.c /^struct x {$/;" s line:13 file: end:15
y foo.c /^ int y;$/;" m line:14 struct:x typeref:typename:int file:
关于parsing - ctags:获取C函数结束行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41076640/