C库的*.h个头文件中,是否应该声明函数

extern void f();

// or only 

void f();
  1. 仅在C分钟内使用时
  2. C++开始使用时.

推荐答案

在声明函数时(几乎)根本不需要使用关键字extern,无论是用C还是C++.在C和C++中,默认情况下所有函数都有外部链接.在头文件中使用extern声明函数的奇怪习惯可能有一些历史根源,但几十年来它已经完全无关紧要了.

有一个[晦涩的?]在C语言(C99)中,如果在某个翻译单元中,一个函数被定义为inline,也被声明为extern(使用了显式extern),那么该函数的内联定义也可以作为an external definition.如果翻译单元中没有显式extern的声明,则内联定义仅用作"内部"定义.

附注:在C++中有extern "C"这样的东西,但那是完全不同的事情.

C++相关问答推荐

gcc已编译的可执行文件TSB是否同时暗示最低有效字节和最低有效位?

C语言中字符数组声明中的标准

#If指令中未定义宏?

Can函数指针指向C++中具有不同参数连续性的函数

为什么GCC C23中的关键字FALSE不是整数常量表达式?

为什么cudaFree不需要数据 struct 的地址?

函数内的局部字符指针

&;(str[i])和(&;str)[i]有什么区别?

获取前2个连续1比特的索引的有效方法

理解bzip2的BZ2_解压缩函数中的状态重新分配

使用正则表达式获取字符串中标记的开始和结束

向左移位3如何得到以字节为单位的位数?

当用C打印过多的';\n';时输出不正确

正在try 理解C++中的`正在释放的指针未被分配‘错误

程序对大输入给出错误答案

浮动目标文件,数据段

可以';t从A9G模块拨打电话

C 和 C++ 标准如何告诉您如何处理它们未涵盖的情况?

快速准确计算double的小数指数

这种 C 函数风格的名称是什么?