-
ヘッダファイルにおいて #define
を条件付きで使用しないようにします。使用すると、リンカで重複情報を容易に削除できなくなります。
-
ヘッダファイルが同じ順序でインクルード(#include
)されるように C または C++ のソースファイルを変更します。
-
ヘッダ情報を小さなブロックに細分化します。つまり、サイズの大きなヘッダファイルを少数使用するのではなく、サイズの小さなヘッダファイルを多数使用します。こうすることにより、リンカによって除去される共通ブロックの数を増やすことができます。
-
ヘッダファイルは必要な場合に限り、C または C++ のソースファイルにインクルードします。
-
ヘッダファイルを複数のインクルードから保護します。ヘッダファイルの複数のインクルードに対する保護用のコードは、#include
ステートメントの周囲ではなく、ヘッダファイルの内部に配置します。例えば、foo.h というヘッダファイルがある場合は、以下を追加します。
#ifndef foo_h
#define foo_h
...
// ヘッダファイルの残りの部分は前と同じ
...
#endif /* foo_h */
コンパイラオプション --remarks
を使用すると、保護されていないヘッダファイルに関する警告を表示できます。
-
プリプロセッサのマクロ定義をデバッグテーブルから削除するには、--no_debug_macros
コマンドラインオプションを使用してコードをコンパイルします。
-
--remove_unneeded_entities
を使用するかどうかを検討します。
注意
--remove_unneeded_entities
には、ファイルごとに生成されるデバッグ情報の量が減る反面、多くのファイルに共通するデバッグセクションの数が少なくなるという欠点があります。最終的なリンク時にリンカが削除できる共通のデバッグセクションの数が減り、最終的なデバッグイメージが必要以上に大きくなる可能性があります。そのため、必要なとき以外、--remove_unneeded_entities
は使用しないで下さい。