在C中使用头文件

问题描述:

我在C中学习头文件的使用。现在我在我的研究中发现了很少的资源,但没有一个创建了期望的效果。在C中使用头文件

首先,根据this教程,我可以在自己的头文件中编写我的函数。但我不想这样做。即使我改变了接口保持不变的代码,我也想保持头文件不变。

回答this问题提出了两种方法。首先,我可以单独写的代码和头文件,包括他们,当我编译如下:

gcc -o myprog test.c library.c 

但我不想做,要么。我的库函数应该随时可用,无需包含在编译行中。根据相同的答案,我可以创建一个库,然后通过-l开关链接到它。但是当涉及像printf这样的函数时,你不需要执行其中的任何一个。你所要做的就是包含头文件。有没有办法做到这一点?

摘要TL; DR

我想其中c写一个库:

  1. 不具有在头文件本身来实现。

  2. 每次使用库函数时都不必包含在编译行中。

  3. 每次使用库函数时都不必与-l链接。

  4. 基本上应该只使用包含头文件的库。

有什么方法可以在Linux中完成吗?

+0

在过去,在共享库成为标准之前,您可以将代码添加到系统C库中。这从来不是一个好主意,系统库的任何更新都会丢弃你的新增内容。但它可以做到。否则,您必须找到一种方法来配置C编译器来运行链接器来自动链接库,就像它自动链接系统C库一样。这可能是可行的。尽管如此,这并不值得。 (同样,对编译器的更改可能意味着每次更新编译器时都必须进行更改)。你应该简单地使用'-lwhatever'。 –

但是,当涉及到像printf这样的函数时,你不需要做任何一个。你所要做的就是包含头文件。有没有办法做到这一点?

简答题是“否”。长时间的答案是C编译器“免费”链接某些库,包括实现printf的库。

你可以选择拒绝这些“免费赠品” - 在gcc中它是-nodefaultlibs。如果您添加此选项,printf将会丢失。

注意:标题可以实现的一件事是宏。然而,宏不像正常的函数,所以你应该非常小心地对待它们。