Sh 检查是否包含的最简单方法

Sh 检查是否包含的最简单方法,sh,Sh,我想检查cpp文件是否包含 #include <stdafx.h> #包括 因为我不想让这个东西失败,当评论在包含之前,我更喜欢一种检查方法,它尊重C++的实际语法。 这很容易做到(以跨平台的方式(在Windows上使用cygwin sh))吗?cpp,GNU编译器集合中的C预处理器,有一个-M标志,列出C文件所依赖的文件,即它包含的头。您可以对所有文件运行cpp,然后过滤掉stdafx.h。我个人不使用Cygwin,但我相信类似的东西应该会起作用: find . -type f

我想检查cpp文件是否包含

#include <stdafx.h>
#包括
<>因为我不想让这个东西失败,当评论在包含之前,我更喜欢一种检查方法,它尊重C++的实际语法。
这很容易做到(以跨平台的方式(在Windows上使用cygwin sh))吗?

cpp
,GNU编译器集合中的C预处理器,有一个
-M
标志,列出C文件所依赖的文件,即它包含的头。您可以对所有文件运行
cpp
,然后过滤掉stdafx.h。我个人不使用Cygwin,但我相信类似的东西应该会起作用:

find . -type f -name "*.cpp" -exec sh -c "echo {} && cpp -M {} | grep -c stdafx.h" \;
这个
查找
s every
f
ile,其中包含一个以cpp结尾的
名称
,然后
exec
生成一个
sh
ell,然后
echo
生成我们正在查看的文件名。然后它通过
cpp
运行它,最后
grep
为我们正在查找的标题ping cpp的输出并计算行数。输出应该如下所示(在Git源代码树中查找stdio.h):


当然,如果你只想检查一个文件,你不需要整个find调用,你只需要执行“cpp-M myfile.cpp | grep-c stdafx.h”,如果它不在那里,它会给你一个0,如果在那里,它会给你一个1,具有一个
-M
标志,该标志列出了C文件所依赖的文件,即它包含的标题。您可以对所有文件运行
cpp
,然后过滤掉stdafx.h。我个人不使用Cygwin,但我相信类似的东西应该会起作用:

find . -type f -name "*.cpp" -exec sh -c "echo {} && cpp -M {} | grep -c stdafx.h" \;
这个
查找
s every
f
ile,其中包含一个以cpp结尾的
名称
,然后
exec
生成一个
sh
ell,然后
echo
生成我们正在查看的文件名。然后它通过
cpp
运行它,最后
grep
为我们正在查找的标题ping cpp的输出并计算行数。输出应该如下所示(在Git源代码树中查找stdio.h):


当然,如果你只想检查一个文件,你不需要整个find调用,你只需要执行“cpp-M myfile.cpp | grep-c stdafx.h”,如果它不在那里,它会给你一个0,如果在那里,它会给你一个1,具有一个
-M
标志,该标志列出了C文件所依赖的文件,即它包含的标题。您可以对所有文件运行
cpp
,然后过滤掉stdafx.h。我个人不使用Cygwin,但我相信类似的东西应该会起作用:

find . -type f -name "*.cpp" -exec sh -c "echo {} && cpp -M {} | grep -c stdafx.h" \;
这个
查找
s every
f
ile,其中包含一个以cpp结尾的
名称
,然后
exec
生成一个
sh
ell,然后
echo
生成我们正在查看的文件名。然后它通过
cpp
运行它,最后
grep
为我们正在查找的标题ping cpp的输出并计算行数。输出应该如下所示(在Git源代码树中查找stdio.h):


当然,如果你只想检查一个文件,你不需要整个find调用,你只需要执行“cpp-M myfile.cpp | grep-c stdafx.h”,如果它不在那里,它会给你一个0,如果在那里,它会给你一个1,具有一个
-M
标志,该标志列出了C文件所依赖的文件,即它包含的标题。您可以对所有文件运行
cpp
,然后过滤掉stdafx.h。我个人不使用Cygwin,但我相信类似的东西应该会起作用:

find . -type f -name "*.cpp" -exec sh -c "echo {} && cpp -M {} | grep -c stdafx.h" \;
这个
查找
s every
f
ile,其中包含一个以cpp结尾的
名称
,然后
exec
生成一个
sh
ell,然后
echo
生成我们正在查看的文件名。然后它通过
cpp
运行它,最后
grep
为我们正在查找的标题ping cpp的输出并计算行数。输出应该如下所示(在Git源代码树中查找stdio.h):


当然,如果您只想检查一个文件,不需要整个find调用,只需执行“cpp-M myfile.cpp | grep-c stdafx.h”即可,如果不在其中,则为0;如果在其中,则为1。

Ah thanx,这看起来非常完美。遗憾的是,
cpp
没有安装在Windows上,所以我们必须在那里解决。
cpp
应该是Cygwin中的
gcc
软件包的一部分。您可能在安装程序中禁用了它。再次运行安装程序并启用Devel组。进一步的问题是,当输入cpp时,还需要传递所有包含路径,因此
cpp
不会发出错误。啊,thanx,这看起来很完美。遗憾的是,
cpp
没有安装在Windows上,所以我们必须在那里解决。
cpp
应该是Cygwin中的
gcc
软件包的一部分。您可能在安装程序中禁用了它。再次运行安装程序并启用Devel组。进一步的问题是,当输入cpp时,还需要传递所有包含路径,因此
cpp
不会发出错误。啊,thanx,这看起来很完美。遗憾的是,
cpp
没有安装在Windows上,所以我们必须在那里解决。
cpp
应该是Cygwin中的
gcc
软件包的一部分。您可能在安装程序中禁用了它。再次运行安装程序并启用Devel组。进一步的问题是,当输入cpp时,还需要传递所有包含路径,因此
cpp
不会发出错误。啊,thanx,这看起来很完美。遗憾的是,
cpp
没有安装在Windows上,所以我们必须在那里解决。
cpp
应该是Cygwin中的
gcc
软件包的一部分。您可能在安装程序中禁用了它。再次运行安装程序并启用Devel组。进一步的问题是,当输入cpp时,您还需要