- ベストアンサー
不要な #include
教えて下さい 使用しない関数を含んだファイルを include した場合、 弊害はありますか? 例えば不必要に実行ファイル、実行時のメモリサイズが大きくなるとか... よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
関数、変数は「参照しない限り、リンクされない」ので、通常は問題ありません。 但し、インクルードファイル内で「グローバル変数を定義(仮定義を除く)」してると、その変数の分、どこかに領域が作られます。 ですが、コンパイラ付属のインクルードファイルでは、上記のような変数定義は無い筈で、上記のような事があるとしたら「自作のインクルードファイルだけ」でしょう。
その他の回答 (4)
- eroermine
- ベストアンサー率18% (83/444)
回答No.5
コンパイルオプション -E で展開を見ればわかります。
- colder
- ベストアンサー率43% (30/69)
回答No.4
処理系が提供するインクルードファイルでも実行ファイルが大きくなる場合があります。 iostreamをincludeするとcin/cout/cerr/clogの初期化コードが埋め込まれます。
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.3
処理系が提供するヘッダに関して言えば「コンパイル時間が増える」以外の悪影響はないはずです. 確かに #2 の言われるように「そのヘッダで宣言された名前が使えなくなる」のですが, 処理系提供のヘッダでは「そのヘッダで宣言されたために使えなくなる名前」はそもそもインクルードしなくても使えないはずです. もちろん自分で作ったヘッダは別.
- bleis
- ベストアンサー率68% (11/16)
回答No.2
コンパイルに余分な時間がかかったり、そのヘッダで宣言されている名前が使用できなくなったりします。 出来る限り余分なファイルはincludeしないようにしましょう。
お礼
ありがとうございます 安心しました