這是我輸入C文件使用Perl來預處理C文件
/**
********************************************************************************
* @fn ChainCtrlSetJpgSnapshotFile
* @brief
* @param[in ]
* @return
********************************************************************************
*/
eErrorT ChainCtrlSetJpgSnapshotFile(ChainCtrlT* pChainCtrl, RouteListItemT* pRoute, char * dst_chain, char *jpg_file_path)
{
...
}
/**
********************************************************************************
* @fn ChainCtrlSetBgFile
* @brief
* @param[in ]
* @return
********************************************************************************
*/
eErrorT ChainCtrlSetBgFile(ChainCtrlT* pChainCtrl, RouteListItemT* pRoute, char * dst_chain, char *bg_file_path)
{
...
}
我的Perl代碼
use strict;
use warnings;
use vars qw(@temp $index);
open(my $FILE, "< a.c") or die $!; ;
my @arr = <$FILE>;
my $pos = 0;
foreach(@arr){
$pos++;
if ($_ =~ /^ \S+ \s+ \S+ \s* \((.+?) \) /xsmg) {
my $arg = $1;
$index = $pos;
my @arr = map /(\w+)$/, split /\W*?,\W*/, $arg;
@temp = map ' * @param[in/out] '."$_\n", @arr;
}
}
$arr[$index - 5] = "";
splice @arr,$index-4,0,@temp;
print @arr;
close($FILE);
誤輸出我得到
/**
********************************************************************************
* @fn ChainCtrlSetJpgSnapshotFile
* @brief
* @param[in ]
* @return
********************************************************************************
*/
eErrorT ChainCtrlSetJpgSnapshotFile(ChainCtrlT* pChainCtrl, RouteListItemT* pRoute, char * dst_chain, char *jpg_file_path)
{
...
}
/**
********************************************************************************
* @fn ChainCtrlSetBgFile
* @brief
* @param[in/out] pChainCtrl
* @param[in/out] pRoute
* @param[in/out] dst_chain
* @param[in/out] bg_file_path
* @return
********************************************************************************
*/
eErrorT ChainCtrlSetBgFile(ChainCtrlT* pChainCtrl, RouteListItemT* pRoute, char * dst_chain, char *bg_file_path)
{ ....
}
我試圖將每個函數參數的名稱添加到它上面的註釋部分。
我的代碼僅適用於最後一個函數定義,但我需要它適用於C文件中的所有函數。
我想我在splice
上犯了一個錯誤,但是在foreach
循環內使用splice
使得它無限期地運行而沒有輸出。
如果我把它寫進去它會進入無限循環 –
@廣告維我的錯誤與我的第一個答案。 – AdrianHHH
$ arr [$ index - 5] =「」; splice @ arr,$ index-4,0,@ temp;應該在支架 –