c - Linux 设备驱动程序中的静态函数?

标签 c linux linux-device-driver static-functions

Linux 代码中的设备驱动程序中的大多数函数定义被定义为静态是有原因的吗?是否有一个原因?

有人告诉我这是为了范围界定和防止命名空间污染,谁能详细解释一下为什么在这种情况下使用静态定义?

最佳答案

声明为静态的函数在定义它们的翻译单元之外是不可见的(翻译单元基本上是一个 .c 文件)。如果一个函数不需要从文件外部调用,那么它应该是静态的,以免污染全局命名空间。这使得相同名称之间的冲突不太可能发生。导出的符号通常使用某种子系统标签进行标识,这进一步减少了冲突的范围。

通常,指向这些函数的指针最终会出现在结构中,因此它们实际上是从定义它们的文件外部调用的,而不是通过它们的函数名。

关于c - Linux 设备驱动程序中的静态函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/348984/

相关文章:

linux - tty_flip_buffer_push() 将数据发回给自己

c - 为什么使用固定长度分配而不是静态分配?

android dumpsys batteryinfo 与 android dumpsys batterystats

更改常量参数

regex - 如何在 Windows 中使用正则表达式匹配行尾

linux - 在文件夹中运行 "N"Shell 脚本

linux - 如何使用 mmap() 映射物理内存

linux - 当tasklet运行并触发硬件中断时,tasklet的状态会发生什么变化?

c++ - (void**) 在 C 中是什么意思?

c - 突破线程限制、段错误