0

在 C 或 C++ 中,static如果函数仅用于单个翻译单元(即文件),则可以将其声明为,例如:

static int square(int a) {
    return a * a;
}

这应该允许编译器更好地优化它。虽然它有点丑(编辑:对丑陋的看法可能会有所不同;这个问题与此无关),如果我不需要,我宁愿不必这样做。它真的有多大的不同?

  1. 它会影响编译时间吗?
  2. 调用可能是的非static函数的开销是static多少?
  3. 链接器能否识别出它仅在一个文件中使用并自动将其转回static函数(可能使用-flto或 ThinLTO?)。

编辑:欢迎任何架构和编译器的答案,但显然更常见的答案更有帮助(Clang,x86-64)。

4

0 回答 0