我正在处理一些我没写过的代码,并注意到有很多extern void my_func();
。
我的理解是全局变量extern
,而不是函数。
是否有实际的理由将函数声明为extern
而不是将其放在头文件中并包含它?或者这只是一种风格选择?
答案 0 :(得分:10)
仅在由于某种原因,头文件未声明该函数时才需要这样做。并且函数始终不需要extern
,因为默认情况下函数始终为extern
。
答案 1 :(得分:-3)
extern
函数的一个用途是假设您有两个模块:module_a(在module_a.h
和module_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来实现功能。我还没有尝试,但它假设以这种方式工作。