Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implicit declaration of mkdir

For my question let's suppose I have two functions, both of them with the prototypes on a .h file in a library folder, and the implementation in a .c auxiliary file (shown below), and I will use both of them in my program.

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

For something I will do later, I need in both functions to create a folder with mkdir, but, in the generation of the object file calsis.o by the compilation of the .c file with the implemented functions, the compilation with GCC gives me a warning that the mkdir function is implicity declared.

Any idea I can remove this warning?

like image 312
SealCuadrado Avatar asked Nov 19 '25 06:11

SealCuadrado


1 Answers

You haven't included the header for mkdir:

From man(2) mkdir:

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

       int mkdir(const char *pathname, mode_t mode);
like image 63
P.P Avatar answered Nov 20 '25 21:11

P.P



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!