函数’close’的隐式声明

我想关闭与句柄关联的文件,但我收到编译器的警告:

main.c:96:2:警告:隐式声明函数’close'[-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 openman close ,找出他们自己需要的库