• ベストアンサー

不要な #include

教えて下さい 使用しない関数を含んだファイルを include した場合、 弊害はありますか? 例えば不必要に実行ファイル、実行時のメモリサイズが大きくなるとか... よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

関数、変数は「参照しない限り、リンクされない」ので、通常は問題ありません。 但し、インクルードファイル内で「グローバル変数を定義(仮定義を除く)」してると、その変数の分、どこかに領域が作られます。 ですが、コンパイラ付属のインクルードファイルでは、上記のような変数定義は無い筈で、上記のような事があるとしたら「自作のインクルードファイルだけ」でしょう。

psychesine
質問者

お礼

ありがとうございます 安心しました

その他の回答 (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しないようにしましょう。

関連するQ&A

専門家に質問してみよう