我是Frama-C的新手,我一直在寻找关于如何为char数组编写注释的注释。通常在示例中我看到它们使用整数。所以我不确定我写的是否正确。
我有这个功能:
User *login(char id[25], char pass[25], User *list);
我写了下面的注释,但我不太确定:
/*@ requires \valid(list);
@ requires \valid_range(id, 0, 25-1);
@ requires \valid_range(pass, 0, 25-1);
*/
答案 0 :(得分:2)
如果没有对你的函数应该作为参数的非正式描述,很难确定,但你的规范看起来确实是正确的,尽管它可能稍微不完整。以下是requires
关于论点的说法:
list
必须是有效指针id
和pass
必须是指针(记住在 formals 声明中,你没有数组,只有指针)到(至少)的块25 char
。更准确地说,您必须能够取消引用id
,id+1
... id+24
。请注意,\valid_range
已弃用,而\valid(id+(0 .. 24-1))
的含义完全相同。
这些要求是有道理的,但是,根据功能应该做什么,您可能需要其他要求。例如,id
和pass
应该是以0结尾的字符串吗?