c - 如何在不包含 C 头文件的情况下使用头文件中的函数?

标签 c header-files

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

我可以想出以下解决方案

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

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

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

最佳答案

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

也就是说,我讨厌这样的面试问题,因为你永远无法确定这是否是他们想要的,因为在实践中,头脑正常的人不会这样做。

关于c - 如何在不包含 C 头文件的情况下使用头文件中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18753390/

相关文章:

c - 先进先出实现

C - char* 列表 - 内存分配

c - 声明大数组时出现堆栈溢出异常

c++ - 头文件顺序

c - emacs open includes in code files, 多个目录

c++ - 为什么必须内联定义在类外部(但在头文件中)的类成员函数?

c - STM32 使用定时器闪烁 LED

c - 将 GCC 移植到 Multiclet

c++ - 确定是否所有需要的头文件都包含在另一个头文件中

c - 预处理器#ifndef