我想打印所有函數定義的大小。以打印函數定義的大小及其名稱
樣本文件(實際文件相當大)
....
VideoChainT* ChainCtrlBuildChain(...)
{
abcd
edfg
dfdsh
}
eErrorT ChainCtrlInit(...)
{
sdgfg
dsgd
}
....
我已經(有更多的也有)到一個文本文件中使用的doxygen
function.txt
ChainCtrlBuildChain
ChainCtrlInit
提取函數名我的代碼
use strict;
use warnings;
open(FILE, "< chaincontroller.c") or die $!;
my @lines = <FILE>;
open(FILE1, "< functions.txt") or die $!;
my @lines1 = <FILE1>;
foreach my $func (@lines1){
foreach my $src_line (@lines){
if ($src_line =~ /$func\([^;]+$/){ # points to function definitions
#need to extract function body into an array and get its size
}
}
}
輸出所需
function ChainCtrlBuildChain has 3 lines.
function ChainCtrlInit has 2 lines.
會明白這個問題的幫助或有任何其他方式..
偉大作品的罰款。但爲什麼3被減少。 –
@ Ad-vic:這是因爲觸發器從函數定義開始,以關閉大括號結束,但函數名稱和大括號都不作爲函數主體的線。 – Birei
好的。但是你沒有初始化$行。我認爲它應該在foreach循環之前初始化爲0。 –