OFとC++初心者の日記

OpenFrameworks と C++をハローワルドする日記

【C++】.hpp .hファイルって何だ?!

OFの勉強を始めるにあたって

下記の書籍を参考にさせていただきました。 yoppa.org

今日は、p133からのC++の部分を読みながら、勉強した内容をメモします。 勉強を始めたばかりなので、間違えていたら教えてください。

■ヘッダーファイル
他のファイルでも使えるような定義を入れる .hppや.hというファイル形式で保存

■.hppと.hの違い
.hpp はC++が入っているという意味
.h はC言語C++で利用することもある)

 ■ヘッダーガード
複数のファイルから同じヘッダーファイルがincludeされた場合、コンパイル中に作成される定義が重複したら困るので、ヘッダーガードが存在する。 (コンパイルの際の動きとしては、複数のファイルを別々にコンパイルしてから、まとめて一つの実行ファイルを作成する。)

ヘッダーガードをするために、下記の3つのコードを記載する。

#ifndef  //ヘッダーファイルを作るときに先頭に記載する
#define //変数を定義
#endif //ヘッダーファイルを作るときの最後に記載する

これら3つのコマンドでヘッダーファイルが一回のみ読み込まれる。
1回目の読み込み → #ifndef の中に入り、ifndef 以下のコードを読む。
2回目以降→ コンパイル中にすでに定義されている状態になり読み込まない。

■#include について

#include <iostream>
//iostreamはC++のファイルの読み込みなどができるライブラリ
//ちなみにincludeは、ファイルの中身を全部コピペしている。
//例えば<iostream>の場合はiostreamをばっと全部コピーしている

サンプルコード

#ifndef Test_hpp //ヘッダーファイルを作るときに先頭に記載するもの
#define Test_hpp //変数を定義
 
#include <iostream>

using namespace std;

class Test { // Testクラスの定義
 public:
     string name; //名前 (状態)
}; //Testクラスの定義終了 (最後に";"が入るのに注意)

#endif /* Test_hpp */ //ヘッダーファイルを作るときの最後

じゃーねぇ(^^)