首页 > 解决方案 > C/C++ 静态函数与非静态函数对链接时间的影响

问题描述

这些函数通常被声明为非静态的,因为它们可以在其他目标文件中调用。

我只是好奇是否有

它将改善链接时间。如果仅在同一源文件中使用和定义,是否值得将它们设为静态?

标签: c++cfunctionstaticlinker

解决方案


如果一个函数在单个源文件中定义和使用,它应该始终是静态的,或者在匿名命名空间中定义。这是因为您有违反 ODR 的风险。此外,如果它可以在任何地方内联,这允许编译器从二进制文件中完全删除该函数。这对于非静态函数是不可能的。

关于链接时间,您可能应该对此进行分析。


推荐阅读