库文件和头文件有什么区别或者它们是同义词?

What is the difference between a library file and a header file or are they synonymous?

#include "stdio.h"

#include "file_created_by_me.h"


第一个include里面有一个库文件,第二个include里面有一个头文件,或者两者都可以叫做libraries或者headers,因为library和header是同义词吗?

都是头文件。

第一个头文件提供了C标准库提供的一些函数的声明。因此,可以说它是C标准库的一部分。

第二个头文件可能提供了在程序其他部分定义的函数声明。因此,它不是 library.

的一部分

库通常会提供头文件,以便您可以 #include 在您的程序中使用它们,以便 compiler has the necessary function declarations in order to call the functions in the library. However, the main part of the library, which consists of the actual function definitions, is not imported by the compiler, but rather by the linker.

区别在于头文件包含(如前所述)一些函数声明,库文件包含该函数的执行代码。 简单示例: myfunc.h - 头文件

#ifndef MYFUNC_H
#define MY_FUNC_H 1

extern void myfunc(void);

#endif /* MYFUNC_H */

myfunc.c - 函数定义

#include <stdio.h>
#include "myfunc.h"

void myfunc(void) {
    printf("Hello world!\n");
}

这是用gcc通过这种方式通过示例编译的:

gcc -Wall -c myfunc.c

生成的文件是 myfunc.o - 这是我们的库 和主程序:

#include "myfunc.h"

int main(void) {
    myfunc();
    return 0;
}

编译它:

gcc -Wall main.c myfunc.o

和运行:

a.exe

在Windows或

./a.out

在 *NIX 系统中...