这是代码行:
bool cpfs_utimens(struct Cpfs *, char const *path, struct timespec const[2]);
运行splint 3.1.2会生成此警告:
cpfs.h:21:74: Function parameter times declared as manifest array (size
constant is meaningless)
A formal parameter is declared as an array with size. The size of the array
is ignored in this context, since the array formal parameter is treated as a
pointer. (Use -fixedformalarray to inhibit warning)
命名参数没有区别。
答案 0 :(得分:5)
这意味着当您声明参数struct timespec const[2]
时,2
和[
之间的]
不是必需的。将代码更改为:
bool cpfs_utimens(struct Cpfs *, char const *path, struct timespec const[]);
在C / C ++中,你不能要求一个特定大小的数组作为参数,因为数组被视为指针而指针没有大小。
答案 1 :(得分:2)
在C99中(因为您使用bool
),您可以通过添加static
这样的参数数组来获得最小长度
bool cpfs_utimens(struct Cpfs *, char const *path, struct timespec const[static 2]);
签名(如果在C中有这样的东西)仍然是一个指针参数的思想。
(而且我也不知道任何现有的编译器能从这些信息中做出明智的事情。)