Intereting Posts

Неявное объявление функции «закрыть»

Я хочу закрыть файл, связанный с дескриптором, но я получаю предупреждение от компилятора:

main.c: 96: 2: предупреждение: неявное объявление функции «закрыть» [-Wimplicit-function-declaration]

И это мой код:

#include  #include  #include  #include  #include  #include  ... int handle; ... handle = open(path, flags, mode); ... close(handle); 

Почему я получаю это предупреждение, и как я могу его решить?

Это весь исходный код:

main.c

 #include "header.h" // Prototypes void menu(char choix); void creer(); void lire(); int ouvrir(char *path, int flags, mode_t mode); int main(int argc, char **argv) { char choix; int c; printf(PROGRAME_NAME, CYAN_BOLD,RESETCOLOR, CYAN_BOLD_BG, RESETCOLOR, CYAN_BOLD, RESETCOLOR); do{ //printf("\e[1;1H\e[2J"); printf("\n\n%sMenu :%s\n", RED_BOLD, RESETCOLOR); printf("\t(%sC%s)réer un fichier\n", RED_BOLD, RESETCOLOR); printf("\t(%sL%s)ire un fichier\n", RED_BOLD, RESETCOLOR); printf("\t(%sE%s)crire sur un fichier\n", RED_BOLD, RESETCOLOR); printf("\t(%sS%s)upprimer un fichier\n",RED_BOLD, RESETCOLOR); printf("\t(%sQ%s)uitter\n",RED_BOLD, RESETCOLOR); do{ printf("\n%sVotre choix :%s ",GREEN_BOLD,RESETCOLOR); do { c = getchar(); choix = tolower(c); } while (c == '\n'); }while((choix != 'c') && (choix != 'l') && (choix != 'e') && (choix != 's') && (choix != 'q')); menu(choix); }while(choix != 'q'); return 0; } void menu(char choix){ switch(choix){ case 'c' : creer(); break; case 'l' : lire(); break; case 'e' : break; case 's' : break; } } void creer(){ char path[64], name[64]; char fullName[128]; int fildes; mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; //~ O_RDONLY : Access Mode (Read Only) //~ O_CREAT : If the file does not exist it will be created //~ O_EXCL : if this flag is specified in conjunction with O_CREAT, and pathname already exists, then open() will fail. int flags = O_RDONLY|O_CREAT|O_EXCL; printf("\n%s-->Donner l'emplacement du fichier :%s ", CYAN_NORMAL, RESETCOLOR); scanf("%s", path); printf("%s-->Donner le nom du fichier :%s ", CYAN_NORMAL, RESETCOLOR); scanf("%s", name); snprintf(fullName, sizeof fullName, "%s/%s", path, name); fildes = ouvrir(fullName, flags, mode); if(fildes == -1){ printf("\n\t%sImpossible de créer le fichier. Réessayez plus tard. (%s)%s",RED_UNDERLINE,strerror(errno), RESETCOLOR); }else{ printf("\n\t%sLe fichier %sa été créé avec succès.%s", CYAN_BOLD, fullName, RESETCOLOR); } close(fildes); } int ouvrir(char *path, int flags, mode_t mode) { return open(path, flags, mode); } 

header.h

 #include  #include  // open function #include  // close function #include "colors.h" #include "const.h" #include  #include  #include  

Вы включили правильные заголовки? Вам необходимо следующее:

 #include  // for open #include  // for close 

man open man close на вашем терминале, чтобы узнать, какие библиотеки им нужны для себя