我正在编写一些我没有编写的代码,并注意到有很多extern void my_func();
.
我的理解是extern
用于全局变量,而不是函数。
是否有实际理由将函数声明为extern
而不是将其放在头文件中并包含它?或者这只是一种风格选择?
仅当由于某种原因头文件未声明该函数时才需要这样做。并且extern
对于函数来说总是不必要的,因为函数总是extern
默认的。
函数的一种用途extern
是假设您有两个模块:module_a(在module_a.h
和module_a.c
文件中实现)、module_b(在module_b.h
和module_b.c
文件中实现)。现在您希望在 module_a 中使用 module_b 的特定功能。但是您不想将 module_b 的所有功能都暴露到 module_a 中。因此,这种情况而不是#include "module_b.h"
您只能extern
使用所需的函数原型。
在使用函数之前在 *.c 文件中声明原型还不够,而不是包含整个头文件?在任何情况下都不需要对函数使用 extern。我还没有尝试过,但它应该是这样工作的。