c - cbmc 如何与 c 标头一起使用?
问题描述
如果我有一个包含多个函数的 ac 文件,并且我想在程序的预处理版本(使用 gcc)上运行带有 z3 求解器的 cbmc,并且标题部分中还有一些其他文件(c 文件)。cbmc 将如何查看这些文件?因为我试图运行它,他给出了一些关于一些变量的错误,因为它们没有在它的位置声明,事实上,它们是在一个头文件中声明的。
谁能解释这是如何工作的?
更新:
int test(int x) {
for (int i = 2; i < sqrt(x); i++) {
if (x%i == 0)
return 0;
}
首先,我使用 gcc 对程序进行预处理
然后通过pycparser解析程序
然后仪器(在4后添加打印语句以查看x的值)
然后我在文件的检测版本上运行 cbmc,我得到了这个错误:函数 `sqrt' 没有声明
解决方案
您应该在项目中包含头文件引用的所有文件。如果相关的 .c 文件不可用,仅包含正确的标头是不够的。
您的示例代码还必须包含以下几行:
else
{
return 1;
}
}
推荐阅读
- javascript - 如果不存在,如何在Javascript中分组并添加空对象
- python-3.x - 如何使用 python mitm 捕获请求并通过烧瓶请求重放
- java - 单击 EditText 时键盘不显示
- batch-file - 脚本新手
- ios - Swift UITableViewCell 阴影没有出现
- python - 下载包含浮点字段的 S3 文件夹
- r - 合并多个 csv 文件,在合并文件中创建一个新列,该列中具有样本名称
- php - 正确连接两个表的问题
- javascript - 存储过程抛出“缺少列规范”
- c# - _userManager.IsInRoleAsync(user, roleName) 只返回 false