我试图在C中学习使用头文件。现在我在研究中发现了一些资源,但没有一个创造出预期的效果。
首先,根据this教程,我可以在头文件中编写我的函数。但我不想这样做。我想保持头文件不变,即使我更改了代码,因为接口保持不变。
对this问题的回答提出了两种方法。首先,我可以单独编写代码和头文件,并在编译时包含它们,如下所示:
gcc -o myprog test.c library.c
但我也不想这样做。我的库函数应该随时可用,而不需要包含在编译行中。根据相同的答案,我可以创建一个库,然后使用-l开关链接到它。但是当谈到像printf这样的功能时,你不需要做任何一个。您所要做的就是包含头文件。有没有办法做到这一点?
TL摘要; DR
我想用C编写一个库:
不必在头文件本身中实现。
每次使用库函数时都不必包含在编译行中。
每次使用库函数时都不必与-l链接。
基本上,只应包含头文件才能使用库。
无论如何我能在Linux上做到吗?
答案 0 :(得分:2)
但是当谈到像printf这样的功能时,你不需要做任何一个。您所要做的就是包含头文件。有没有办法做到这一点?
简短的回答是" no"。很长的答案是C编译器链接一些库"免费",包括实现printf
的库。
你可以选择拒绝这些"免费赠品" - 在gcc中-nodefaultlibs
。如果添加此选项,则会遗漏printf
。
注意:标头可以实现的一件事是宏。但是,宏的行为与普通函数不同,因此您应该非常谨慎地接近它们。