编译代码时未定义对“ main”的引用

时间:2019-07-18 22:04:11

标签: c

我创建了一个C程序,该程序将创建目录和文件。

我试图调试该错误,但没有成功

#include <dirent.h>
#include <errno.h>
#include<stdio.h> 
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>

create_dir(char* outputdir,char* str_outpath,char* value){

DIR* dir = opendir(outputdir);
FILE *f;

if (dir) {
    /* Directory exists. */
    closedir(dir);
} else if (ENOENT == errno) {
    /* Directory does not exist. */
    mkdir(outputdir, 0700);
    closedir(dir);
    printf("Successfully created the directory %s ", outputdir);

} else {
    printf("Creation of the directory %s failed",outputdir);
    /* opendir() failed for some other reason. */

}

f = fopen(str_outpath, "a");
fprintf(f,"%s",value);
fclose(f);

}

我希望它成功创建文件和目录

2 个答案:

答案 0 :(得分:4)

正如其他人所提到的。您没有主要功能。 另外,您的create_dir函数缺少类型。我假设它是空的,因为您什么也不会退货。这应该编译。

GroupBox

我没有执行代码来检查它是否有效。我只复制并粘贴了您的函数,然后调用了该函数。

答案 1 :(得分:2)

在大多数情况下,您需要使用C语言的main函数。因此,为了运行您的代码,您需要在该函数的下面有类似以下内容(假设您要从命令行传递参数):

const getMetaD = (mediaID) => {
    return new Promise((resolve, reject) => {
           let obj = {};

       ytdl.getInfo(mediaID, {}, async (err, info) => {
           if (err) console.log(err);

           let format = await ytdl.chooseFormat(info.formats, { quality: 'highest' });

           if (format) {
             console.log('Format found!', format);
             obj = { url: format.url, thumbnail: info.thumbnail, title: info.title };
           }
           resolve(obj);
         });
    })

}

编辑:修复了不检查argc的问题