C中静态函数和非静态函数的区别

时间:2012-09-28 15:04:34

标签: c

我正在VxWorks上开发一个嵌入式应用程序。

我知道只在定义的文件中调用静态函数,并在源项目的任何文件中调用非静态函数。

我想知道静态和非静态函数之间是否存在执行时间和有关内存的区别

3 个答案:

答案 0 :(得分:13)

绝对没有性能差异。 static关键字对函数执行的唯一操作是内部linkage,这意味着它们只能在定义的文件中访问。

答案 1 :(得分:2)

执行时间或运行时内存要求没有区别。

一些(很多?)链接器会发现更容易发现未使用的静态函数并删除它们,以便可能鼓励更小的代码。

答案 2 :(得分:2)

这取决于你的编译器。理论上可以更好地优化静态函数,因为编译器将知道它们被调用的所有位置。您应该能够从编译器获取汇编列表,并自行了解它们是否更有效。