我遇到了makefile文件的问题。当我编译时,我得到了很多问题。我的主要问题是弄清楚我应该把我的全局常量放在我的程序中。我试图把它们都放在主文件中,但似乎没有工作。makefile文件常量声明和结构问题时出错
banksystem: main.o admin.o customer.o
gcc -o banksystem main.o admin.o customer.o
main.o: main.c admin.h customer.h
gcc -c main.c
admin.o: admin.c admin.h basefunctions.h
gcc -c admin.c
customer.o: customer.c customer.h basefunctions.h
gcc -c customer.c
basefunctions.o: basefunctions.c basefunctions.h
gcc -c basefunctions.c
这就是我制作makefile的过程。我真的不知道这是否正确。在做这个测试每个函数之前,我把整个代码放到一个文件中,但是现在我试图分解它。我得到一吨的错误与我的常量和结构
struct info{ //Example struct
int a;
int b;
};
struct info collection[MAX]; //Example array
我不知道放在哪个文件在此以及其他全球常量
#define MAX 100
#define char "customerdata.txt"
typedef int (*compfn)(const void*, const void*)
我应该把这些变量主要的源文件?或者我应该把它们放在basefunctions源文件中,也应该如何在不包含我的结构信息的文件中使用extern,或者我猜,我该如何处理我的结构?我所有的功能都使用它。我所有的函数都使用这个数组。
代码非常冗长,所以我不打算包含它。我要问的要点,
当我有一个struct,结构数组,全局const const,全局char常量时,如何重新格式化我的代码以在makefile中工作。
void load(){
FILE *fp;
fp = fopen(FILE_NAME, "rb");
if (fp != NULL){
fread(collection, sizeof(struct userinfo), MAX, fp);
}
else{
printf("ERROR");
}
fclose(fp);
}
void save(){
FILE *fp;
fp = fopen(FILE_NAME, "wb");
fwrite (collection, 1, sizeof(collection), fp);
fclose(fp);
}
我也越来越具有这两种功能
warning: passing argument 1 of ‘fopen’ makes pointer from integer without a
cast [-Wint-conversion]
fp = fopen(FILE_NAME, "rb");
^
对不起这个警告,如果这是漫长的和模糊的帮助将是非常赞赏
这个问题有没有关系的makefile - 你有同样的问题* *没有一个makefile,如果你只是跑自己的所有命令。 – immibis
如果您可以发布单独的问题而不是将问题合并为一个问题,那么这是首选。这样,它可以帮助人们回答你的问题,也可以帮助其他人至少狩猎你的一个问题。谢谢! –