これは、宿題用の静的ライブラリにコンパイルされることになっています。コマンド「gcc -c innoprompt.c inprompt.c」を使用すると、警告が表示され、「fin = openFilePrompt();」という行を指しています。innoprompt.c から。これがどのようにこの警告を引き起こすのかわかりません。また、このライブラリをリンクして実際のプログラムをコンパイルすると、同じ警告が表示されます。割り当ての性質上、ライブラリから関数を呼び出しているファイルを変更することはできません。
これはファイルのヘッダーです。
#pragma once
#ifndef LIBINFILEUTIL_H
#define LIBINFILEUTIL_H
#include <stdio.h>
FILE* openInputFile(char* fileName);
FILE* openInputFile();
#endif
これは私の inprompt.c #include "libinfileutil.h" です
FILE* openFilePrompt(){
char fileName[100];
FILE* fin = NULL;
do{
printf("\nPlease enter file to be opened: ");
fscanf(stdin,"%s",fileName);
while(fgetc(stdin) !='\n');
fin = fopen(fileName, "r");
if(fin==NULL)
printf("Failed to open file. Please try another file name.\n");
}while(fin==NULL);
return fin;
}
最後に、これは私の innoprompt.c です。
#include "libinfileutil.h"
FILE* openInputFile(char* fileName){
FILE* fin = NULL;
fin = fopen(fileName, "r");
if(fin==NULL)
fin = openFilePrompt();
return fin;
}