windows7 64bit,VC++でプログラミングしているんですけどヘッダファイルの正しい使い方が分からないです。
私は宣言のためにヘッダファイルを読み込むという認識でつかっております。
ところがこの前ヘッダ関係のエラーに始めてあいました。
とりあえず同じヘッダファイルを読み込んでいる部分を少なくしたらエラーが出なくなりました。今でも詳しい原因は分かりません。
VC++では#pragma onceというのがあって、一度しか読み込まないことを保障してくれる?っぽいので使いたいヘッダを今までヘッダに書き続けてました。
説明がすごく下手ですが何がききたいかというと
何のヘッダを読み込んでいるのか分かりやすくするために、必要なヘッダを全て書く行為は間違っているのかどうかです。
例~
Aクラスヘッダ <stdio.h>
Bクラスヘッダ <stdio.h>
Cクラスヘッダ <Aクラスヘッダ><Bクラスヘッダ><stdio.h>
ここでCクラスはstdio.hを3回読み込んでいることになっています。これでいいのかどうかという質問です。
ヘッダファイルの使い方
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ヘッダファイルの使い方
必ず必要でもないヘッダをヘッダ中でインクルードをするのは余り良くありません。
ヘッダ中でヘッダをインクルードするのは止む負えない事情(ヘッダ中で他のヘッダで宣言された構造体を使っている場合)などに限定されると思ってください。
理由は可読性・メンテンナンス性が下がるからです。無駄な依存性は修正を厄介にします。
ヘッダに書くものはクラスや構造体やtypedefや定数など最低限のものに絞り込む必要があります。
ヘッダ中でヘッダをインクルードするのは止む負えない事情(ヘッダ中で他のヘッダで宣言された構造体を使っている場合)などに限定されると思ってください。
理由は可読性・メンテンナンス性が下がるからです。無駄な依存性は修正を厄介にします。
ヘッダに書くものはクラスや構造体やtypedefや定数など最低限のものに絞り込む必要があります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
- 記事: 51
- 登録日時: 11年前
Re: ヘッダファイルの使い方
softya(ソフト屋)さん回答ありがとうございました。
必要最低限のヘッダを読み込むことにします
必要最低限のヘッダを読み込むことにします
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ヘッダファイルの使い方
もしエラーが再現できるなら、ここに貼ってもらうとアドバイスできると思います。AliceCoder さんが書きました:softya(ソフト屋)さん回答ありがとうございました。
必要最低限のヘッダを読み込むことにします
ヘッダのインクルード順で起きる問題とかにも対象方法があります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。