2

Code::Blocks を使用してプログラムを作成していますが、インクルード<string>(または<iostream>) すると、exe のサイズが大きくなります。私のプログラムは非常にシンプルで、20kb 未満に抑える必要があります。これは、C++ 標準委員会が古い .h バージョンを .h のない多くの新しいライブラリに交換したためだと確信しています。しかし、〜43kbを追加しないようにするにはどうすればよいですか? 余分なkbを追加しないようにCode::Blocksの設定はありますか、それとも使用できる別のネイティブライブラリがありますか?

4

5 に答える 5

10

サイズが最大の懸念事項である場合 (そして、20KB 未満に保つ必要がある場合は、おそらくそうです)、標準の C++ ライブラリはおそらく適切ではありません。実際、C ++ (RTTI、例外など) はおそらく悪い考えであり、ストレート C に固執する方がよいでしょう。

于 2010-05-16T23:13:18.477 に答える
6

Cヘッダーの名前変更/変更<string>もありません。<iostream>どちらも C++ の初心者です。C ライブラリに固執したい場合は<cstring><cstdio>C ヘッダー"string.h""stdio.h".

于 2010-05-16T23:19:46.293 に答える
0

-debug モードではなく - release モードでアプリをビルドすることを忘れないでください。これにより、アプリのサイズが大幅に縮小されます。

于 2010-05-16T23:26:13.380 に答える
0

.h のないヘッダー バージョンは、他のバージョンと違いはありません。.h バージョンは、主に互換性のために提供されています。追加のサイズはstringクラスであり、サイズはそれほど驚くべきことではありません. サイズのオーバーヘッドをゼロにしたくない場合: std::string を使用しないでくださいchar*

次のステップは、コンパイラ オプションです。ほとんどのコンパイラには、RTTI を無効にしてサイズを最適化する機能があります。-Os -fno-rttigccの正しいスイッチになります。

それ以外の場合は、サイズを最適化するためのすべての標準的なトリックが適用されます。

  • 静的データはありません。常に計算します
  • 仮想関数を使用しない
  • タイトに詰め込み、ビットフィールドを使用する
  • C++ よりも C の方が適しているかもしれません (これについては議論の余地があります)。
于 2010-05-16T23:15:05.293 に答える
0

コンパイラ スイッチを使用して、ファイル サイズに基づいて最適化することができます。どこにも行かない場合は、 stlportを使用してみてください。ただし、結果が改善されるかどうかはわかりません。

于 2010-05-16T23:16:01.937 に答える