C - "比较" fts_open的参数是?

时间:2015-10-11 09:14:04

标签: c traversal

fts_open如定义on the man page将比较函数作为参数。虽然我理解将错误检查放入函数中是一种很好的做法,但实际上对函数的期望是什么? FTS会不会提供空值作为参数,还是会自行检查?

1 个答案:

答案 0 :(得分:1)

FTS仅使用有效指针调用您的函数。那就是:

int my_compar(const FTSENT **ppx, const FTSENT **ppy) { ... }

ppx有效,*ppx有效,**ppx有效(同样适用于ppy)。

唯一需要注意的是,不得访问fts_accpathfts_path fts_pathlen的{​​{1}},**ppx**ppy字段

关于一般的错误检查:您无法检查指针是否有效。您可以检查空指针,但不能检查未初始化的值,目标不再存在的指针(“悬空”)等等。因此,您可以执行的检查非常有限。

对于函数参数,调用者有责任提供有效值。在这种情况下,“来电者”是FTSENT。它的描述只是说“ [fts_open函数]指向compar结构指针的两个指针作为参数”,这意味着它正是它将传递的内容。如果它希望你处理空指针(或指向空指针的指针),那么文档就会明确说明。