生成带有函数原型的头文件的 BASH 脚本

生成带有函数原型的头文件的 BASH 脚本

我正在做一个涉及大量静态链接的 C 项目。

为了摆脱“隐式函数声明”错误,我将使用一个简单的解决方案——带有函数原型的头文件。

我写了这个脚本:

#!/bin/bash
for file_to_parse in `find -type f -name "*.c"`; do
    cproto $file_to_parse > proto.h 2> /dev/null
done

它应该创建一个名为的文件proto.h并将函数原型存储在其中。

笔记:

find -type f -name "*.c"此命令返回此脚本目录中所有 c 文件的路径名。

例如./folder1/file1.c

cproto <i>file</i>=> 这将根据在中找到的函数创建函数原型file

例如<code>double myfunction(int a,char b);

问题:

该代码生成一个空文件。

这个 Bash 脚本有什么问题?

答案1

当然,有很多方法可以改变它。这里只是其中之一:

 #!/bin/bash
 if [ ! -f proto.h ]; then
       touch proto.h
 fi
 for file_to_parse in `find -type f -name "*.c"`; do
    cproto $file_to_parse >> proto.h 2> /dev/null
 done

错误在于以下cproto...行中的重定向:简单的方法>首先擦除目标文件,然后写入。相反,>> 附加到目标文件而不破坏它。循环if只是为了确保第一次传递时不会附加到不存在的文件:附加到不存在的文件没有任何问题,不会抛出任何错误;只是我想确保它是一个简单的,常规的文件,然后再写入。

相关内容