8

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

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

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

4

3 回答 3

11

仅当由于某种原因头文件未声明该函数时才需要这样做。并且extern对于函数来说总是不必要的,因为函数总是extern默认的。

于 2010-10-06T22:34:42.117 回答
-3

函数的一种用途extern是假设您有两个模块:module_a(在module_a.hmodule_a.c文件中实现)、module_b(在module_b.hmodule_b.c文件中实现)。现在您希望在 module_a 中使用 module_b 的特定功能。但是您不想将 module_b 的所有功能都暴露到 module_a 中。因此,这种情况而不是#include "module_b.h"您只能extern使用所需的函数原型。

于 2010-10-06T23:24:40.370 回答
-3

在使用函数之前在 *.c 文件中声明原型还不够,而不是包含整个头文件?在任何情况下都不需要对函数使用 extern。我还没有尝试过,但它应该是这样工作的。

于 2012-11-12T15:18:41.120 回答