【发布时间】:2014-04-30 20:29:30
【问题描述】:
这是一个从一个更大的程序中缩减的快速测试用例,该程序使用 frama-c NEON 产生了语法错误:
cat <<"EOF" > min.i
struct list;
typedef struct list list_t;
void list_merge(list_t *, list_t *, int (const void *, const void *));
EOF
frama-c -val min.i
frama-c 是否仅限于我在这里违反的 c99 的某个子集?
【问题讨论】:
-
您几乎已经收到了bts.frama-c.com/my_view_page.php 的错误报告。您只需要包含观察到的行为(“min.i:3:[kernel] user error: syntax error”)和期望的行为(程序接受,因为“gcc -c -Wall -std=c99 -pedantic min.i”接受它)。
-
输入程序可以进一步简化为
void list_merge(int(int));。这个简化的程序可以重写为void list_merge(int (*)(int));(我认为它是等效的),以便被 Frama-C 接受,以防万一。我什至不知道第一种形式是否可以接受,所以我不会在这里责怪 Frama-C。