我正在研究C源文件的软件software窃检测方法。为此,我编写了一个程序来简化源代码的语法,例如使所有变量名称相同,并使所有循环类型相同。显然,我无法对语法不正确(因此无法编译)的代码执行此操作。
有一个GCC命令可以查看C源代码gcc -c -fsyntax-only assignment1.c
上的语法问题。该命令打印出assignment1.c
代码,其中包含一些奇怪的行和语法问题(如果存在)。但是我需要一个布尔输出,只需指定代码是否正确编写即可。有命令吗?或如何为此目的使用-fsyntax-only
命令? (顺便说一句,我不想编译代码,我只需要检查它们的语法即可。)
编辑:我想我被误解了。我需要阅读C源文件,然后以编程方式检查其语法。因此,我应该在创建的程序中使用命令gcc -c -fsyntax-only assignment1.c
的输出。
答案 0 :(得分:1)
GCC的-fsyntax-only
标志可用于测试输入文件在语法上是否有效而不产生任何输出文件。返回值取决于输入是否有效。
因此,以下在sh / Bash中起作用:
input=file.c
if gcc -c -fsyntax-only "$input" >/dev/null 2>&1; then
echo "$input is valid C code"
else
echo "$input is invalid"
fi
添加了输出重定向以抑制语法错误消息。