C中静态函数和正常函数的区别?

Sar*_*san 3 c static function

在我们的项目中,我们有大约50K行的相当大的C文件,用90年代写成.我想根据功能拆分文件.但是,此文件中的所有函数都声明为static.所以,文件作用域.如果我拆分文件,那么file1中的函数不能调用file2中的函数,反之亦然.

但是,My TL感觉可以通过使用静态函数进行内存优化.我写了一些示例代码,以查看不同线程的堆栈是否不同.好像是这样.有人可以请教我静态功能和正常的其他文件范围之间的区别吗?

Zif*_*ion 6

在C中,在定义函数时,static关键字具有以下两个主要后果:

  1. 防止导出函数名称(即函数没有外部链接).因此,防止来自代码的其他部分的链接/直接调用.

  2. 由于该函数明确标记为文件的私有,因此编译器可以更好地为函数生成完整的调用图.这可能导致编译器决定自动内联函数以获得更好的性能.