最简单的检查方式包括

时间:2014-06-26 12:29:59

标签: sh

我想检查包含

的cpp文件
#include <stdafx.h>

因为我不希望这件事情失败,例如注释在include之前,我更喜欢一种检查方式,它尊重实际的c ++语法。 这可以轻松完成(以跨平台的方式(在Windows上使用cygwin))?

1 个答案:

答案 0 :(得分:3)

cpp,来自GNU编译器集合的C预处理器,有一个-M标志,列出了C文件所依赖的文件,即它包含的头文件。您可以在所有文件上运行cpp,然后过滤掉stdafx.h。我个人并不使用Cygwin,但我相信这样的事情应该有效:

find . -type f -name "*.cpp" -exec sh -c "echo {} && cpp -M {} | grep -c stdafx.h" \;

findfname的{​​{1}}以cpp结尾,然后exec依次为sh echo我们正在查看的文件名。然后它通过cpp运行它,最后grep ping cpp的输出,我们正在查找并计算行数。输出应该类似于这样(在Git源代码树中查找stdio.h):

./diff.c
0
./gettext.c
1
./gpg-interface.c
0
./hashmap.c
0
./hex.c
0
./environment.c
0
./remote-testsvn.c
0
./server-info.c
0
./compat/fopen.c
1
./compat/basename.c
1
./compat/strtoimax.c
1
./compat/hstrerror.c
1
./compat/pread.c
1
./compat/gmtime.c
1
./compat/setenv.c
1

当然,如果你只想检查一个文件,你不需要整个查找调用,你可以只做“cpp -M myfile.cpp | grep -c stdafx.h”这将给你或者如果不在那里,则为0;如果在,则为1。