簡體   English   中英

遞歸調用C中的函數隱式聲明

[英]Implicit declaration of function in recursive call C

我試圖編寫一個遞歸函數以列出所有目錄,直到輸入常規文件,但出現以下錯誤:

1.c:25:21:警告:函數'changeDirectoryAndGetFileName'的隱式聲明在C99中無效[-Wimplicit-function-declaration] if(!isFile(sf))changeDirectoryAndGetFileName(); ^

產生1條警告。 體系結構x86_64的未定義符號:“ _ changeDirectoryAndGetFileName”,引用自:1-b3c344.o中的_changeDirectoryAndGetFilename

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;
}

對於架構x86_64的未定義的符號:“_changeDirectoryAndGetFileÑAME”,從引用:_changeDirectoryAndGetFileÑAME

請注意,與調用函數相比,被調用函數名稱中n的大寫字母。 換句話說:確實定義了changeDirectoryAndGetFile n ame,但是未定義changeDirectoryAndGetFile N ame(大寫N)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM