在 C 中使用头文件
Using header files in C
我有几个问题,包括我的程序中的自定义库
我有我的 main.c
文件和一个 library.c
(存储所有函数的位置)和 library.h
(存储所有原型的位置)。
我在 main.c
中放置了 #include "library.h"
,但是当我尝试编译时这些函数没有被识别。
我是不是做错了什么?
我正在使用 GCC 构建文件。
test.c:
#include "library.h"
int main()
{
int num = 5;
sum(num);
}
library.c
#include "library.h"
int sum(int num)
{
return num + 5;
}
library.h
#ifndef LIBRARY_H
#define LIBRARY_H
#include <stdio.h>
int sum(int num);
#endif
获取错误:
C:\Users\Gabriel\Desktop\test.o:test.c|| undefined reference to `sum'|
包括头文件是不够的。头文件中的原型只是告诉编译器应该有一个函数。
您必须实际将函数添加到程序中。这是在链接时完成的。最简单的方法是
gcc -o myprog test.c library.c
还有更复杂的选项。如果你想将几个文件实际添加到一个库中,你可以独立编译它们并构建存档。以下是一些显示基本思想的命令。
gcc -o library.o library.c
gcc -o someother.o someother.c
ar a libmy.a library.o someother.o
gcc -o myprog test.c -l my
我有几个问题,包括我的程序中的自定义库
我有我的 main.c
文件和一个 library.c
(存储所有函数的位置)和 library.h
(存储所有原型的位置)。
我在 main.c
中放置了 #include "library.h"
,但是当我尝试编译时这些函数没有被识别。
我是不是做错了什么?
我正在使用 GCC 构建文件。
test.c:
#include "library.h"
int main()
{
int num = 5;
sum(num);
}
library.c
#include "library.h"
int sum(int num)
{
return num + 5;
}
library.h
#ifndef LIBRARY_H
#define LIBRARY_H
#include <stdio.h>
int sum(int num);
#endif
获取错误:
C:\Users\Gabriel\Desktop\test.o:test.c|| undefined reference to `sum'|
包括头文件是不够的。头文件中的原型只是告诉编译器应该有一个函数。
您必须实际将函数添加到程序中。这是在链接时完成的。最简单的方法是
gcc -o myprog test.c library.c
还有更复杂的选项。如果你想将几个文件实际添加到一个库中,你可以独立编译它们并构建存档。以下是一些显示基本思想的命令。
gcc -o library.o library.c
gcc -o someother.o someother.c
ar a libmy.a library.o someother.o
gcc -o myprog test.c -l my