- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 scandir
打印当前目录中的文件列表。当我尝试编译时,收到以下错误和警告:
warning: implicit declaration of function ‘scandir’ [-Wimplicit-function-declaration]
error: ‘alphasort’ undeclared (first use in this function)
note: each undeclared identifier is reported only once for each function it appears in
我包括 <dirent.h>
,据我所知应该定义 scandir()
以及所有相关功能。而且我的代码中没有发现任何错误:
#include <dirent.h>
...
int printFiles(){
struct dirent **nameList;
int numOfFiles = scandir(".", &nameList, 0, alphasort);
//TODO print file names
return numOfFiles;
}
....
我正在运行 Ubuntu 12.04,我正在使用 gcc
进行编译与 -c99
旗帜。
我是不是忽略了什么?我不明白为什么它无法编译。
最佳答案
如果您使用 -std=c99
,则只有严格属于 C99 标准一部分的函数才会包含在头文件中。 scandir()
不在 C99 标准中。因此,您必须设置一个预处理器变量以确保包含函数原型(prototype)。例如,scandir()
的手册页指示在执行 #include< 之前设置
将解决问题。或者,您可以使用 _BSD_SOURCE
或 _SVID_SOURCE
预处理器变量#define _GNU_SOURCE
,它会依次为您设置许多不同的变量(包括 _BSD_SOURCE
和 _SVID_SOURCE
)。
您的代码仍会在出现警告的情况下编译并正常工作,因为 C 允许您使用隐式定义的函数进行编译,并且链接器会正确地将对 scandir()
的调用链接到正确的函数。
关于c - scandir 的隐式声明; alphasort 未声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19439855/
我正在为我的一个 C 程序使用 scandir() 函数。在 scandir() 中,我要求它对我的目录进行 alpha 排序。然而,当我有诸如 alpha、bob 之类的文件时,它们会被放置在 DA
我正在尝试使用 scandir打印当前目录中的文件列表。当我尝试编译时,收到以下错误和警告: warning: implicit declaration of function ‘scandir’ [
祝大家有美好的一天! 我有一些问题。当我为所选节点的父节点调用 AlphaSort 时(所选节点目前不可见,因为我已向下或向上滚动 TreeView ), TreeView 滚动到所选节点(如调用 M
我是一名优秀的程序员,十分优秀!