在C中使用头文件
问题描述:
我在C中学习头文件的使用。现在我在我的研究中发现了很少的资源,但没有一个创建了期望的效果。在C中使用头文件
首先,根据this教程,我可以在自己的头文件中编写我的函数。但我不想这样做。即使我改变了接口保持不变的代码,我也想保持头文件不变。
回答this问题提出了两种方法。首先,我可以单独写的代码和头文件,包括他们,当我编译如下:
gcc -o myprog test.c library.c
但我不想做,要么。我的库函数应该随时可用,无需包含在编译行中。根据相同的答案,我可以创建一个库,然后通过-l开关链接到它。但是当涉及像printf这样的函数时,你不需要执行其中的任何一个。你所要做的就是包含头文件。有没有办法做到这一点?
摘要TL; DR
我想其中c写一个库:
不具有在头文件本身来实现。
每次使用库函数时都不必包含在编译行中。
每次使用库函数时都不必与-l链接。
基本上应该只使用包含头文件的库。
有什么方法可以在Linux中完成吗?
答
但是,当涉及到像printf这样的函数时,你不需要做任何一个。你所要做的就是包含头文件。有没有办法做到这一点?
简答题是“否”。长时间的答案是C编译器“免费”链接某些库,包括实现printf
的库。
你可以选择拒绝这些“免费赠品” - 在gcc中它是-nodefaultlibs
。如果您添加此选项,printf
将会丢失。
注意:标题可以实现的一件事是宏。然而,宏不像正常的函数,所以你应该非常小心地对待它们。
在过去,在共享库成为标准之前,您可以将代码添加到系统C库中。这从来不是一个好主意,系统库的任何更新都会丢弃你的新增内容。但它可以做到。否则,您必须找到一种方法来配置C编译器来运行链接器来自动链接库,就像它自动链接系统C库一样。这可能是可行的。尽管如此,这并不值得。 (同样,对编译器的更改可能意味着每次更新编译器时都必须进行更改)。你应该简单地使用'-lwhatever'。 –