我想知道在您的代码中使用未使用的函数的开销是多少。
例如,假设您有一些调试日志记录,然后您为大多数对象提供一个 ToString() 函数,该函数正在调试日志中使用。
在未使用调试日志记录的发布版本中。那么删除那些 ToString() 函数的源代码是否值得?(例如通过宏?)
或者他们只是让可执行文件稍微大一点,否则不会影响性能?例如没有速度影响?或者编译器或链接器是否甚至可能删除不使用的函数?如果编译器或链接器不删除代码,如果 ToString() 函数是内联定义的呢?大概它会尝试内联代码,并且由于从未调用过该函数,它会消失吗?
我想每个函数都需要保留在静态库中,但是一旦编译为可执行文件,链接器肯定会忽略很多东西吗?
在另一个大致相似的注意事项上,如果编译器选择不内联内联函数,以便内联函数被定义为多个编译单元中的函数,链接器是否会丢弃多余的定义并在最后只链接其中一个?
谢谢