在 C 或 C++ 中,static
如果函数仅用于单个翻译单元(即文件),则可以将其声明为,例如:
static int square(int a) {
return a * a;
}
这应该允许编译器更好地优化它。虽然它有点丑(编辑:对丑陋的看法可能会有所不同;这个问题与此无关),如果我不需要,我宁愿不必这样做。它真的有多大的不同?
- 它会影响编译时间吗?
- 调用可能是的非
static
函数的开销是static
多少? - 链接器能否识别出它仅在一个文件中使用并自动将其转回
static
函数(可能使用-flto
或 ThinLTO?)。
编辑:欢迎任何架构和编译器的答案,但显然更常见的答案更有帮助(Clang,x86-64)。