1

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

我可以想出以下解决方案

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

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

这是一个面试问题,所以它本质上是一个技巧问题。没有实际用途。

4

2 回答 2

1

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

也就是说,我讨厌这样的面试问题,因为你永远不确定这是否是他们正在寻找的东西,因为没有人在他们的头脑中会在实践中这样做。

于 2013-09-12T00:31:24.337 回答
0

但是对于大多数头文件已经预编译到目标文件中的情况,这将失败

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

于 2013-09-12T00:29:53.027 回答