是否有理由将linux代码中设备驱动程序中的大多数函数定义定义为静态?是否有一个原因?
我被告知这是为了确定范围和防止命名空间污染,任何人都可以详细解释为什么在这种情况下使用静态定义?
声明为static的函数在它们定义的转换单元之外是不可见的(转换单元基本上是.c文件).如果不需要从文件外部调用函数,则应将其设置为静态,以免污染全局名称空间.这使得相同名称之间的冲突不太可能发生.导出的符号通常使用某种子系统标记进行标识,这进一步减少了冲突的范围.
通常,指向这些函数的指针最终会出现在结构中,因此它们实际上是从它们定义的文件外部调用的,而不是它们的函数名称.