我想知道在代码中有未使用的函数会带来多大的开销。
比如说,你有一些调试日志记录,然后你给大多数对象都添加了一个ToString()函数,在调试日志中使用它。
在发布版本中,这个调试日志将不再被使用。此时是否值得移除那些ToString()函数的源代码?(例如通过宏)
还是说它们只会使可执行文件稍微变大,否则不会影响性能?例如没有速度上的影响?或者编译器或链接器甚至会删除那些未被使用的函数吗?如果编译器或链接器不删除代码,那如果ToString()函数被定义为内联函数呢?它会尝试将代码内联,而由于该函数从未被调用过,所以代码会消失吗?
我想每个函数都需要在静态库中保留,但一旦编译成可执行文件,肯定会有很多东西被链接器忽略掉吧?
另外一个问题,如果编译器选择不内联一个内联函数,以至于该内联函数在几个编译单元中都被定义为函数,那么链接器会丢弃多余的定义,只在最终连接时链接一个吗?
谢谢