【发布时间】:2018-10-27 20:47:11
【问题描述】:
man scandir 给了我scandir 函数的以下结构:
int scandir(const char *dirp, struct dirent ***namelist,
int (*filter)(const struct dirent *),
int (*compar)(const struct dirent **, const struct dirent **));
假设我定义如下:
struct dirent **namelist;
int len = scandir('.', &namelist, NULL, NULL)
这会列出当前文件夹中的所有文件和文件夹名称。但是假设我有如下结构的filter 和compar 函数:
int (*filter)(const struct dirent *) {
}
与比较类似,我想根据某些条件调用此过滤器函数或仅调用 NULL:
if (some criteria) int *filters = NULL;
else int* filters = &filter
int len = scandir('.', &namelist, filters, NULL)
但这会导致指针错误。有没有办法解决这个问题?
【问题讨论】:
-
“这给出了指针错误”:你能分享确切的错误信息吗?在编译期间?执行期间?