我将所有函数声明放在.h文件中,并将所有函数放在一个唯一的.c文件中,并为每个函数中的.h文件执行#include。但是,当我尝试使用-c开关进行编译时,我得到每个文件的.o文件,我收到一条消息说没有这样的文件或目录#include。当我从每个.c文件中取出#include头文件时,我能够获得.o文件,但是当我输入ar rcs stephanstring.a * .o时,我得不到文件格式。对不起的解释我很困惑。
请记住,我们将函数声明保存在头文件中,即.h文件中。您的每个函数都应该在一个单独的.c文件中(例如,您在一个名为strcmp_ign_case.c的文件中使用strcmp_ign_case,xerox.c中的xerox函数)。
所以你有: .c文件的集合: 一个用于库中的每个函数 一个测试程序 单个.h文件,包含库中每个函数的声明。这是每个.c文件的#included。 生成图书馆(5分) 要创建库文件,我们使用ar命令。语法是: ar rcs NameOfTheLibraryFileToCreate listOfFilesToIncludeInTheLibrary 不要忘记你包括二进制文件,即.o文件,而不是你的c源文件。 因此,假设您将所有函数.o文件放在一个目录中,并且您想要调用库文件libstr2107.a,您可以键入: ar rcs libstr2107.a .o 要仔细检查,您可以尝试: ar t libstr2107.a 如果您看到.o文件列表,那么您已经做好了。
**这是我的.h文件,我将其保存为stephanstring.h,并将其放在与所有.c文件相同的目录中。所以在每个.c文件中我做了#include stephanstring.h **
int is_blank(char *s);
int find_idx(char *s, char c);
char *find_ptr(char *s, char c);
char *make_space(int width);
char *center(char *s, int width);
int begins_with_ignore_case(char *s, char *pre);
int ends_with_ignore_case(char *s, char *suff);
char *remove_chars(char *s1, char *s2);
int index_of_first_difference(char *s1, char *s2);
void lstrip(char *s);
void rstrip(char *s);
char *repeat(const char *s, int x);
char *slice(char *s, int b, int e);
int strcmp_ign_case(char *s1, char *s2);
char *ellipsize(char *s, int nw);
char *replace(char *s, char *pat, char *rep);
char **chop(char *s, char c);