gpt4 book ai didi

c - scandir 匹配函数参数

转载 作者:行者123 更新时间:2023-12-02 08:53:32 26 4
gpt4 key购买 nike

我正在使用 scandir 来匹配目录中的某些文件。 match 函数采用 const struct dirent *dp 参数。

但我还需要传递另一个参数。当我尝试这样做时,编译会发出警告(不是错误),指出我的匹配函数的指针类型不兼容。

是否不允许向 match 函数传递另一个参数?如果不是,我可能必须将该特定变量设置为全局变量,但我不想这样做。

代码片段:

/* below I am adding new argument - char *str */
match_function (const struct dirent *dp, char *str) {
}

function() {
count = scandir(PATH, &namelist, match_function, alphasort);
}

警告:

warning: passing argument 3 of 'scandir' from incompatible pointer type

最佳答案

另一种方法可能比使用全局变量或线程特定数据更好,就是编写您自己的 scandir 替代品,并让它采用额外的 void * 它将传递给 match 函数的参数。考虑到 scandir 可以用不到 50 行代码轻松实现,这是完全合理的。

这是 scandir 的可能实现:

http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=src/dirent/scandir.c

关于c - scandir 匹配函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6701461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com