【发布时间】:2019-11-24 21:37:47
【问题描述】:
我正在尝试编写一个递归函数来列出所有目录,直到输入常规文件,但我收到以下错误:
1.c:25:21: 警告:函数的隐式声明 'changeDirectoryAndGetFileName' 在 C99 中无效 [-Wimplicit-function-declaration] if(!isFile(sf)) changeDirectoryAndGetFileName(); ^
生成了 1 个警告。 架构 x86_64 的未定义符号: “_changeDirectoryAndGetFileName”,引用自: 1-b3c344.o 中的 _changeDirectoryAndGetFilename ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
Here is my code:
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
void listCurrentDirectory(){
DIR *d;
struct dirent *entry;
d = opendir(".");
while((entry=readdir(d)) != NULL)printf("%s\n", (*entry).d_name);
closedir(d);
}
int isFile(char *fname){
struct stat pstat;
stat(fname, &pstat);
return S_ISREG(pstat.st_mode);
}
char *changeDirectoryAndGetFilename(){
listCurrentDirectory();
char sf[] = "Placeholder";
scanf("%s", sf);
printf("File selected: %s\n", sf);
if(!isFile(sf)) changeDirectoryAndGetFileName();
return "d";
}
int main(int argc, char *argv[]){
if(argc != 2){
printf("code(-c) or decode(-d)\n");
return 1;
}
changeDirectoryAndGetFilename();
return 0;
}
【问题讨论】: