如果我的ac文件包含多个功能,并且我想在程序的预处理版本上使用z3求解器运行cbmc(使用gcc),并且标头部分中还有一些其他文件(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'
答案 0 :(得分:0)
您应在项目中包含头文件引用的所有文件。如果关联的.c文件不可用,仅包含正确的标题是不够的。
您的示例代码还必须包含以下几行:
# first, you create a struct with the order col and the valu col
df = df.withColumn("my_data", F.struct(F.col('orderCol'), F.col('valueCol'))
# then you create an array of that new column
df = df.groupBy("partitionCol").agg(F.collect_list('my_data').alias("my_data")
# finaly, you apply your function on that array
df = df.withColumn("calculatedCol", my_udf(F.col("my_data"))