HSPとC++にて製作中のシューティングゲームの開発日記など。
最近はプログラム雑記が多めです。
さっき始めて知ったソースとヘッダーの関係。
ヘッダーは使用するソースにインクルードする必要あるのに
ソースはプロジェクトに入れとくだけで勝手にまとめてくれるんですね・・・。
HSPだと全部繋げる必要あったのでその流れでずっと考えてました。
ヘッダがそもそも無いので当然と言えば当然ですが驚きです。
ついでなのでヘッダーのまとめ。
ヘッダーに書けるもの(この時点でメモリが確保されない物が相当)
・クラス定義
(※ただしメンバ関数の中身はソースに記述)
・#define文
・enumや実体を伴わない構造体
ヘッダーに書けないもの(実体を作る物は基本NG)
・メモリを使うもの
(例えばグローバル変数定義とか構造体定義とか)
int abc;
struct ABC {
int aaa;
}xyz;
実際に書くとこんな感じかな・・・。
もし、int abcをヘッダに書きたいときは
extern int abc と書く。
この後必ずソースで実体を定義しなければならない
この他にグローバル関数も記述してはいけない。
ヘッダの重複コンパイルを防ぐために
#ifndef ABCDE
#define ABCDE
// ヘッダの中身
#endif // ~ABCDE
と記述すると複数コンパイルされるのを防げる。
ABCDEは任意の文字。
ちなみに最初の文を #ifdef にしてしまうとヘッダがコンパイルされない。
この間違いをして壮絶な事になりました・・・||orz
どうしてヘッダの事を調べてるのかと言うと・・・
ZFのソースを一つのソースに書いてVSが異常に重くなってきたからです・・・。
細分化前が4000行で今チマチマヘッダと他のソースに細分化中です。
さて、一体何行まで減らせるのでしょうね・・・
ヘッダーは使用するソースにインクルードする必要あるのに
ソースはプロジェクトに入れとくだけで勝手にまとめてくれるんですね・・・。
HSPだと全部繋げる必要あったのでその流れでずっと考えてました。
ヘッダがそもそも無いので当然と言えば当然ですが驚きです。
ついでなのでヘッダーのまとめ。
ヘッダーに書けるもの(この時点でメモリが確保されない物が相当)
・クラス定義
(※ただしメンバ関数の中身はソースに記述)
・#define文
・enumや実体を伴わない構造体
ヘッダーに書けないもの(実体を作る物は基本NG)
・メモリを使うもの
(例えばグローバル変数定義とか構造体定義とか)
int abc;
struct ABC {
int aaa;
}xyz;
実際に書くとこんな感じかな・・・。
もし、int abcをヘッダに書きたいときは
extern int abc と書く。
この後必ずソースで実体を定義しなければならない
この他にグローバル関数も記述してはいけない。
ヘッダの重複コンパイルを防ぐために
#ifndef ABCDE
#define ABCDE
// ヘッダの中身
#endif // ~ABCDE
と記述すると複数コンパイルされるのを防げる。
ABCDEは任意の文字。
ちなみに最初の文を #ifdef にしてしまうとヘッダがコンパイルされない。
この間違いをして壮絶な事になりました・・・||orz
どうしてヘッダの事を調べてるのかと言うと・・・
ZFのソースを一つのソースに書いてVSが異常に重くなってきたからです・・・。
細分化前が4000行で今チマチマヘッダと他のソースに細分化中です。
さて、一体何行まで減らせるのでしょうね・・・
PR
Comment
この記事にコメントする
Trackback
この記事にトラックバックする: |
カレンダー
カテゴリー
カウンター
最新コメント
最新記事
(11/23)
(10/24)
(09/13)
(09/06)
(08/30)
プロフィール
ブログ内検索
最古記事
(02/12)
(02/18)
(03/19)
(03/26)
(08/10)