Linux 代码中的设备驱动程序中的大多数函数定义被定义为静态是有原因的吗?是否有一个原因?
有人告诉我这是为了范围界定和防止命名空间污染,谁能详细解释一下为什么在这种情况下使用静态定义?
最佳答案
声明为静态的函数在定义它们的翻译单元之外是不可见的(翻译单元基本上是一个 .c 文件)。如果一个函数不需要从文件外部调用,那么它应该是静态的,以免污染全局命名空间。这使得相同名称之间的冲突不太可能发生。导出的符号通常使用某种子系统标签进行标识,这进一步减少了冲突的范围。
通常,指向这些函数的指针最终会出现在结构中,因此它们实际上是从定义它们的文件外部调用的,而不是通过它们的函数名。
关于c - Linux 设备驱动程序中的静态函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/348984/