c - mkdir 的隐式声明

标签 c function makefile

对于我的问题,假设我有两个函数,它们的原型(prototype)都在库文件夹中的 .h 文件中,实现在 .c 辅助文件中(如下所示),我将同时使用它们在我的程序中。

calsis.c

 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <fcntl.h>
 #include "include/calsis.h" /* Extern header */ 

char folder_name[30] = "Information";

void no_args() /* Function 1 */
{
  printf("Hello, world!\n");

   if ( mkdir(folder_name, S_IRWXU) == -1 )
    perror("Can't create a new folder");
}

void with_args(char *foo) /* Function 2 */
{
   printf("Hello, world!\n");
   printf("Name: %s\n", foo);

   if ( mkdir(folder_name, S_IRWXU) == -1 )
    perror("Can't create a new folder");
}

对于我稍后要做的事情,我需要在两个函数中使用 mkdir 创建一个文件夹,但是,在通过编译 .c 文件生成目标文件 calsis.o 时已实现的功能,使用 GCC 进行的编译给我一个警告,即 mkdir 函数是隐式声明的

我可以删除此警告吗?

最佳答案

您还没有包含 mkdir 的 header :

来自 man(2) mkdir:

SYNOPSIS
       #include <sys/stat.h>
       #include <sys/types.h>

       int mkdir(const char *pathname, mode_t mode);

关于c - mkdir 的隐式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19479746/

相关文章:

c - 为什么这个 C 函数有副作用?

c - 我怎样才能跨越 union 的位域?

javascript - 无法访问对象文字中的方法

javascript - 从数组中随机选取多个

bash - 使用循环时如何使makefile错误退出?

c++ - 使用 make 将 .o 文件移动到单独的目录

c - c中的 "struct <name_1> <name_2>"是什么?

c - 如何优雅地退出 X11 事件循环?

c++ - main() 的激活记录

c++ - 创建将 .o 存储到目录的 makefile c++