0
給定.c文件和標識文件中定義的函數的函數名稱,我們如何自動提取其參數的類型(以其逐字符串形式)?例如,C函數看起來像提取C函數的參數類型
int foo(double x, double* y){...}
我需要輸出到一個文件,說types
,兩行
double
double*
我想LLVM應該是矯枉過正。也許使用簡單的Unix命令,比如'awk'已經可以完成這項工作了?
給定.c文件和標識文件中定義的函數的函數名稱,我們如何自動提取其參數的類型(以其逐字符串形式)?例如,C函數看起來像提取C函數的參數類型
int foo(double x, double* y){...}
我需要輸出到一個文件,說types
,兩行
double
double*
我想LLVM應該是矯枉過正。也許使用簡單的Unix命令,比如'awk'已經可以完成這項工作了?
試試這個:
ctags -x xpd.c | sed -n '/function/{s/.*(//; s/).*//; /^$/d;
s/\*\([^ ]\)/* \1/; s/ *[^ ]*, */\n/g; s/ *[^ ]*$//; p; }'
這拉類型出我的C代碼,但我不能說,它將爲所有的C工作 - 因人而異。
在sed的一些注意事項:
double x, double *y
*y
成* y
x, -> \n
y
哇。這是不容置疑的! – zell
如果你想讓它工作,請使用一個真正的解析器,就像你從libclang獲得的解析器一樣。 –
_automatically_?你在說通過命令行解析文件還是編程解析? 'awk'在unix環境中都非常棒。 – ryyker