在C

时间:2016-11-06 00:36:16

标签: c header-files

我试图在C中学习使用头文件。现在我在研究中发现了一些资源,但没有一个创造出预期的效果。

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

this问题的回答提出了两种方法。首先,我可以单独编写代码和头文件,并在编译时包含它们,如下所示:

gcc -o myprog test.c library.c

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

TL摘要; DR

我想用C编写一个库:

  1. 不必在头文件本身中实现。

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

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

  4. 基本上,只应包含头文件才能使用库。

  5. 无论如何我能在Linux上做到吗?

1 个答案:

答案 0 :(得分:2)

  

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

简短的回答是" no"。很长的答案是C编译器链接一些库"免费",包括实现printf的库。

你可以选择拒绝这些"免费赠品" - 在gcc中-nodefaultlibs。如果添加此选项,则会遗漏printf

注意:标头可以实现的一件事是宏。但是,宏的行为与普通函数不同,因此您应该非常谨慎地接近它们。