C语言中静态函数和正常函数的区别?
在我们的项目中,我们有大约50K行的相当大的C文件,是在90年代编写的。 我想根据功能分割文件。但是,该文件中的所有函数都声明为静态函数。所以,文件范围是有限的。如果拆分文件,则file1中的函数无法调用file2中的函数,反之亦然 但是,我的TL觉得可以通过使用静态函数来优化内存。 我编写了一些示例代码,以查看不同线程的堆栈是否不同。C语言中静态函数和正常函数的区别?,c,function,static,C,Function,Static,在我们的项目中,我们有大约50K行的相当大的C文件,是在90年代编写的。 我想根据功能分割文件。但是,该文件中的所有函数都声明为静态函数。所以,文件范围是有限的。如果拆分文件,则file1中的函数无法调用file2中的函数,反之亦然 但是,我的TL觉得可以通过使用静态函数来优化内存。 我编写了一些示例代码,以查看不同线程的堆栈是否不同。 好像是的。有人能告诉我静态函数和普通函数在文件作用域上的区别吗?在C中,定义函数时,static关键字有以下两个主要后果: 防止导出函数名(即函数没有外部链接)
好像是的。有人能告诉我静态函数和普通函数在文件作用域上的区别吗?在C中,定义函数时,static关键字有以下两个主要后果:
最重要的区别是不能在任何其他文件中调用静态函数。我想是的,是吗?所有函数都隐式声明为extern,这意味着它们在翻译单元中可见。但是当我们使用static时,它将函数的可见性限制在定义它的转换单元。因此,我们可以说,只有同一文件中的其他函数才可见的函数称为静态函数。通常使用
static
的主要目的是避免名称冲突,而不是任何优化或效率问题。因此,如果您可以为函数名添加足够唯一的前缀或后缀,则可以将它们设置为extern
。