将保存/加载函数分解为模块(.c、.h、.o)文件
我的项目有一个任务,我必须把我的保存和加载函数写在不同的模块中。听起来像这样- 在不同的将保存/加载函数分解为模块(.c、.h、.o)文件,c,function,C,Function,我的项目有一个任务,我必须把我的保存和加载函数写在不同的模块中。听起来像这样- 在不同的.c文件中编写这些函数,创建用于处理该模块的头文件(.h)和目标文件(.o) 我几乎没有使用这些头文件和对象文件的经验,我不清楚为什么我需要它们 我的理解是,我只是将这些保存/加载函数粉碎成一个不同的.c文件,并将其包含在我的主程序中,(.h)和(.o)文件的用途是什么?我在上面写什么 以下是我的职能: int loadUsersData(int balance) { int size, savedB
.c
文件中编写这些函数,创建用于处理该模块的头文件(.h
)和目标文件(.o
)
我几乎没有使用这些头文件和对象文件的经验,我不清楚为什么我需要它们
我的理解是,我只是将这些保存/加载函数粉碎成一个不同的.c
文件,并将其包含在我的主程序中,(.h
)和(.o
)文件的用途是什么?我在上面写什么
以下是我的职能:
int loadUsersData(int balance) {
int size, savedBalance;
FILE *f;
f = fopen("save.bin", "rb");
fseek (f, 0, SEEK_END);
size = ftell(f);
fseek(f, 0, SEEK_SET);
if(size != 0) {
fread(&savedBalance, sizeof(int), 1, f);
balance = savedBalance;
}
fclose(f);
return balance;
}
以及:
我不清楚为什么我需要它们
您需要头文件来获取函数原型和其他声明
是的,您可以使用main方法在主文件中包含一个.c文件。这将产生几个影响:
static
来修复struct someOpaqueType;
typedef struct someOpaqueType * OpaqueType;
这表明,头文件的用户不应该关心/查看struct someOpaqueType
的内容
(.h)和(.o)文件的用途是什么
头文件(.h)包含定义、声明和函数原型
对象文件(.o)包含未链接到可执行文件的已编译C代码。如果使用-c
(gcc/clang),则这些是输出文件格式。
此外,它还包含调试信息、重新定位数据等内容
我在上面写什么
比如说
#ifndef USER_DATA //This include guard is there to make it only included once per translation unit.
#define USER_DATA
//Function protoype.
int loadUsersData(int);
void saveUsersData(int);
#endif
或者,如果要使用非标准扩展,请执行以下操作:
#pragma once
int loadUsersData(int);
void saveUsersData(int);
我不清楚为什么我需要它们
您需要头文件来获取函数原型和其他声明
是的,您可以使用main方法在主文件中包含一个.c文件。这将产生几个影响:
static
来修复struct someOpaqueType;
typedef struct someOpaqueType * OpaqueType;
这表明,头文件的用户不应该关心/查看struct someOpaqueType
的内容
(.h)和(.o)文件的用途是什么
头文件(.h)包含定义、声明和函数原型
对象文件(.o)包含未链接到可执行文件的已编译C代码。如果使用-c
(gcc/clang),则这些是输出文件格式。
此外,它还包含调试信息、重新定位数据等内容
我在上面写什么
比如说
#ifndef USER_DATA //This include guard is there to make it only included once per translation unit.
#define USER_DATA
//Function protoype.
int loadUsersData(int);
void saveUsersData(int);
#endif
或者,如果要使用非标准扩展,请执行以下操作:
#pragma once
int loadUsersData(int);
void saveUsersData(int);
这是你的C课本上的一个问题。有一点是,这个
*.o
没有多大意义,因为它是编译的输出,并且通常不“维护”。这是C教科书中的一个问题。有一件事是,这个*.o
没有多大意义,因为它是编译的一个输出,并且通常不“维护”。