반응형
함수의 암시적 선언 '닫힘'
핸들과 연결된 파일을 닫고 싶은데 컴파일러에서 경고가 표시됩니다.
main.c:96:2: 경고: 함수 '닫힘'의 암시적 선언 [-Wimplicit-function-declaration]
그리고 이건 제 소스 코드입니다.
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <ctype.h>
#include <errno.h>
#include <string.h>
...
int handle;
...
handle = open(path, flags, mode);
...
close(handle);
이 경고가 표시되는 이유와 해결 방법은 무엇입니까?
다음은 완전한 소스 코드입니다.
주.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 %s a é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);
}
머리글.h
#include <stdio.h>
#include <fcntl.h> // open function
#include <unistd.h> // close function
#include "colors.h"
#include "const.h"
#include <ctype.h>
#include <errno.h>
#include <string.h>
올바른 헤더를 포함했습니까?다음이 필요합니다.
#include <fcntl.h> // for open
#include <unistd.h> // for close
하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다man open
그리고.man close
당신의 터미널에서 그들이 당신 자신을 위해 어떤 도서관이 필요한지 알기 위해.
언급URL : https://stackoverflow.com/questions/19472546/implicit-declaration-of-function-close
반응형
'programing' 카테고리의 다른 글
파이어베이스에서 역할 기반 액세스 제어를 구현하려면 어떻게 해야 합니까? (0) | 2023.06.25 |
---|---|
vuex를 사용하는 다른 구성 요소에서 v-model의 값 변경 (0) | 2023.06.25 |
Angular 8 애플리케이션에서 세션 스토리지 구현 (0) | 2023.06.20 |
MySQL 워크벤치에 CSV 파일 로드 (0) | 2023.06.20 |
Vuex에서 404 페이지 표시로 Axios 오류 포착 (0) | 2023.06.20 |