コードに未使用の関数があると、どのようなオーバーヘッドが発生するのでしょうか。
たとえば、デバッグログがあり、ほとんどのオブジェクトにデバッグログで使用されているToString()関数を指定するとします。
リリースビルドでは、デバッグログは使用されていません。それなら、それらのToString()関数のソースコードを削除する価値はありますか?(例えば、マクロ経由?)
それとも、実行可能ファイルをわずかに大きくするだけで、それ以外の場合はパフォーマンスに影響を与えませんか?たとえば、速度への影響はありませんか?または、コンパイラまたはリンカは、関数が使用されていない場合、関数を削除する可能性さえありますか?コンパイラまたはリンカがコードを削除しない場合、ToString()関数がインラインで定義されているとどうなりますか?おそらくそれはコードをインライン化しようとします、そして関数が決して呼び出されないので、それは消えますか?
すべての関数を静的ライブラリに保持する必要があると思いますが、実行可能ファイルにコンパイルされると、確かに多くのものがリンカーによって無視されますか?
ほぼ同様の別の注意点として、コンパイラがインライン関数をインライン化しないことを選択した場合、インライン関数は複数のコンパイルユニットで関数として定義され、リンカーは不要な定義を削除し、最後にそのうちの1つのみをリンクします。 ?
ありがとう