如何解决基本脚本程序在C语言中存在检查功能
我想知道如何通过bash脚本编程检查C语言程序中是否存在功能。
假设我用C语言编写了一个程序:
fun.c
void add();
void main() {
add();
}
void add() {
printf"hello");
}
我想通过bash脚本检查上述程序功能是否存在?
#!bin/bash ? ? ? ?
解决方法
您可以创建一个临时文件,并在其中使用要检查其存在性的函数中添加一行:
#!/bin/bash
cp func.c /tmp/func.c # Create temp file
echo "void testAdd() { add(); }" >> /tmp/func.c # Append test line
gcc /tmp/func.c -o /dev/null # Run test
if [ $? -eq 0 ] # Check gcc's exit code
then
echo "function add() exists"
else
echo "Can't find add() or other error"
fi
使用-o /dev/null
gcc的输出将被丢弃。当函数存在并且没有其他错误时,gcc应该通过。否则,应返回一条错误消息,并且退出代码$?
不为零:
func.c:10:18: warning: implicit declaration of function ‘add’ [-Wimplicit-function-declaration]
void testAdd() { add(); }
但是,必须始终知道函数签名,否则将发生错误:
func.c:10:18: error: too few arguments to function ‘add’
void testAdd() { add(); }
如果测试不取决于功能签名,则可以改用此测试行:
void testAdd() { void* a = add; }
但是,add也可以是全局变量而不是此处的函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。