gpt4 book ai didi

python删除C函数体

转载 作者:行者123 更新时间:2023-11-28 20:09:39 25 4
gpt4 key购买 nike

我正在寻找如何从某些 C 源文件中的函数中删除整体的方法。

例如我有这个内容的文件:

1.  int func1 (int para) {
2. return para;
3. }
4.
5. int func2 (int para) {
6. if (1) {
7. return para;
8. }
9. return para;
10. }

我试过这些正则表达式:

content = re.sub('(\{[.*]?\})', '', content, flags=re.DOTALL)

但是嵌套的{}有问题。此正则表达式仅替换第一个 },因此第 9 行和第 10 行仍在内容中。我认为解决方案应该是计算 { 和 } 括号并在计数器为 0 时停止替换。 { is found => counter++, } is found => counter--。但我不知道如何在 python 中实现它。你们能给我一脚吗?

最佳答案

我认为您正在尝试重新发明一个已经实现过多次的轮子。如果您只想提取 C 文件中每个函数的签名,则有更简单的方法。

ctags 实用程序将为您处理此问题:

~/test$ ctags -x --c-types=f ./test.c
func1 function 1 ./test.c int func1 (int para) {
func2 function 5 ./test.c int func2 (int para) {
~/test$ # Clean up the output a little bit
~/test$ ctags -x --c-types=f ./test.c | sed -e 's/\s\+/ /g' | cut -d ' ' -f 5-
int func1 (int para) {
int func2 (int para) {

关于python删除C函数体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10324922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com