我有一个包含很多 C 文件的目录。对于这些 C 文件中的每一个,我都需要添加#include config.h
. 有没有办法避免手动执行此操作?
我在想也许有一种巧妙的方法可以告诉预处理器这样做,或者将结构良好的标志传递给链接器。如何让目录中的所有文件“包含”相同的头文件?
我有一个包含很多 C 文件的目录。对于这些 C 文件中的每一个,我都需要添加#include config.h
. 有没有办法避免手动执行此操作?
我在想也许有一种巧妙的方法可以告诉预处理器这样做,或者将结构良好的标志传递给链接器。如何让目录中的所有文件“包含”相同的头文件?
要么使用-include
开关
$ cat foo.c
int main(void) {
printf("%s\n", "ohai there o/");
return 0;
}
$ gcc -include stdio.h foo.c
或编写一个脚本,该脚本将自动为您插入包含在内
在这些示例中编辑.c
文件,并在文件的第一行添加包含。
假设bash shell,GNU sed
:
while read -r; do
sed -i '1i #include "config.h"' "$REPLY"
done < <(find /path/to/project/dir -type f -name "*.c")
或者用一些POSIX
find /path/to/project/dir -type f -name "*.c" | while read -r file; do
ed "$file" <<EOF
0a
#include "config.h"
.
wq
EOF
done