为什么要使用`extern void my_func();`而不是包含`my_utils.h`?

时间:2010-10-06 22:31:55

标签: c extern

我正在处理一些我没写过的代码,并注意到有很多extern void my_func();

我的理解是全局变量extern,而不是函数。

是否有实际的理由将函数声明为extern而不是将其放在头文件中并包含它?或者这只是一种风格选择?

3 个答案:

答案 0 :(得分:10)

仅在由于某种原因,头文件未声明该函数时才需要这样做。并且函数始终不需要extern,因为默认情况下函数始终为extern

答案 1 :(得分:-3)

extern函数的一个用途是假设您有两个模块:module_a(在module_a.hmodule_a.c文件中实现),module_b(在module_b.h和{{中实现) 1}}文件)。现在您想要module_b的特定功能在module_a中使用。但是您不希望将module_b的所有功能公开到module_a中。因此,只有module_b.c而不是#include "module_b.h",您才可以extern所需的函数原型。

答案 2 :(得分:-3)

在使用函数之前在* .c文件中声明原型是不够的,而不是包括整个头文件?在任何情况下都不需要使用extern来实现功能。我还没有尝试,但它假设以这种方式工作。