如何使用头文件中的函数而不在C中包含头?

时间:2013-09-12 00:20:02

标签: c header-files

假设我有一个头文件abc.h,它定义了一个函数foo()。如何在我的程序中不使用foo()的情况下在标题文件abc.h中使用#include<abc.h>函数?

我可以提出以下解决方案

  • 手动将函数从头文件复制到程序中。但是,对于大多数已将函数定义预编译为目标文件的情况,这将失败。因为在这种情况下,复制粘贴函数原型将不会有任何好处,因为无法解析对该函数的未解析引用。
  • 在标准库的情况下不要做任何事情,因为IDE可以解决这个问题。但这显然是未定义的行为,并且取决于IDE。对于非标准库,它肯定会失败。

那么如何在不包含头文件的情况下在头文件中使用函数(不一定来自标准库)?

这是一个面试问题,所以这实际上是一个棘手的问题。不实际使用。

2 个答案:

答案 0 :(得分:1)

我相信这里的关键词是在头文件中“定义”,而不仅仅是声明。标头必须编译为一个对象。要使用它,您将“声明”源中的函数并与目标文件链接。

那就是说,我讨厌这样的面试问题,因为你从来都不确定这是不是他们正在寻找的东西,因为没有一个心智正常的人会在实践中这样做。

答案 1 :(得分:0)

  

但是,对于大多数已将标头预编译为目标文件

的情况,这将失败

这句话毫无意义。标头可以用于来编译目标文件,但它们永远不会被编译成对象文件中;它们总是在外部使用。