私はそのクラスの中で使われていないprivate
メソッドはコンパイラ/リンカによって削除され、最終的なバイナリの一部ではないと考えました。最後のバイナリから未使用のメソッドを除外する方法は?
実装されていますが使用されていないプライベートメソッドを使用して、サンプルクラスを作成しました。
class XXX
{
public:
XXX();
private:
void MyUnusedMethod();
};
と実装ファイルで
:void XXX::MyUnusedMethod()
{
const char* hugo = "ABCCHARLYABC";
printf(hugo);
}
は、コンパイル後の文字列は、まだ最終バイナリに存在します。どうして?そして、どうすればこれを防ぐことができますか?
敬具、 チャーリー
なぜ、その方法を '#if 0 ... #endif'ブロックに入れることができないのですか? – iammilind
gccの最適化フラグを調整しようとしましたか? – slaphappy
あなたが '-O3'フラグを意味するならば、それは違いはありません。もちろん、もし私がもう使用しないことを知っていれば、私はそれを削除するのが面倒ではありません。しかし、それはまた、一般的な質問です:なぜそれはコンパイラ/リンカーによって落とされませんか? – Charly