DATE : 2006/10/13 (Fri)
テスト用プロジェクトの作成
解凍して出てきたフォルダのうち、src フォルダの中にあるファイルを、テスト用のプロジェクトフォルダにコピーします。ただし、次のようにコピーします。
- src フォルダの直下にあるファイル(フォルダは除く)をコピー
- src\utils フォルダをコピー
テスト用のプロジェクトファイルを「test_project」とすると、コピー後は次に示すフォルダ階層になるはずです。
- test_project
- src フォルダの直下にあったファイル
- utils フォルダ
次に、src\platforms\brew フォルダの中身を、プロジェクトフォルダにコピーします。ただし、brew フォルダの中にはサンプル用のファイルも含まれているので、C++ のソースコード(*.h と *.cpp)のみをコピーします。なお、その中にある brewunit.cpp はサンプル用のソースコードです。これを基にしてテストプログラムを記述すると楽なので、コピーすることにしました。
結果、プロジェクトフォルダは次のようなフォルダ階層になります。
- test_project
- src フォルダの直下にあったファイル
- src\platforms\brew フォルダの直下にあったソースコード
- utils フォルダ
もしも Visual C++ を使っている場合は、フィルタを作成してこれまでにコピーしたファイルをまとめておくと見通しが良くなります(ただし、brewunit.cpp はテストプログラムの作成の際に参照するだけなので、フィルタにはまとめないようにします)。
(つづきます)
DATE : 2006/10/12 (Thu)
C++ 用の、しかも BREW に対応したテスティングフレームワークがないかとネット上をさまよっていたら、その名も「Brew Test Unit」なるものを見つけました。
Brew Test Unit では、テストを行う BREW アプリケーションを実行してテストを行います。テスト結果は BREW シミュレータの出力ウィンドウに出力したり、ログファイルに書き出したりできます。BREW アプリケーションとしてテストできるので、BREW API に依存したモジュールでもテストすることができます。
せっかくなので、簡単な使い方をメモしていこうと思います。対象とするバージョンは、1.0.4です。
ダウンロード
まず、「Brew Test Unit download」から、「brewTestUnit-1.0.4.zip」をダウンロードします。
ダウンロードしたファイルを解凍すると、次の一覧に示すフォルダやファイルが出てきます。
- build フォルダ
- vc71_brew フォルダに、サンプルをビルドする Visual C++ 7.1 用のプロジェクトファイルが格納されています。
- doc フォルダ
- Brew Test Unit の API ドキュメントが納められています。
- examples フォルダ
- テストケースの例が納められています。
- src
- Brew Test Unit のソースコードです。
(つづきます)
DATE : 2006/10/11 (Wed)
いつもメインとして使っているノート PC の電源コードが断線してしまいました orz
帰宅した後、PC の電源を付けて他の部屋へ行っていたのですが、戻ってきた時にはすでに沈黙していました。
(;^ω^)バッテリーはすでに死んでいるので、コンセントからの電源供給がなくなると PC の電源もすぐに切れてしまいます
初めは PC そのものが壊れてしまったのかと思ってプラグをコンセントに差し込みなおしたり、深呼吸したり、orz したりしていたのですが、ふと AC アダプタの本体部分を持ち上げてみると、バッテリーの充電ランプが点滅しました。
ここでようやく、PC が壊れたのではなく、電源コードが断線したことに気付きました。いろいろと試してみると、ある方向にコードと AC アダプタ本体との接続部分が曲がると断線するようでした。
そこで、断線しない方向に曲げたコードを本体部分に固定して、応急処置としておきました。とりあえず、近日中に新しい AC アダプタを購入する予定です。
(;^ω^)バッテリーが死んでいるので、突然断線すると怖いですからね
ちなみに、私が使っているノート PC は、1年に1回どこか調子が悪くなります。1年目はディスクドライブとバッテリー(ここでバッテリーは諦めました)、2年目はファン、そして3年目は電源コード……といった流れです。それも、綺麗に10月付近に調子が悪くなります。
(;^ω^)季節の変わり目だからでしょうか
(;^ω^)それにしても、もう購入店の長期保証も切れてしまったので、あまり変なところが壊れてくれると大変なことになりそうです
DATE : 2006/10/10 (Tue)
Java では、次のように定数を書きました。
public Something { public static final int SOME_NUMBER = 10; public static final double SOME_VALUE = 0.1; ... }
C 言語では、主にマクロを使って定義します。
#define SOME_NUMBER 10 #define SOME_VALUE 0.1
C++ でも、マクロを使って定数を宣言できます。しかし、次のように宣言する方法もあります。
const int SOME_NUMBER = 10; const double SOME_VALUE = 0.1; // 宣言されたファイルでのみ使用する場合 static const int SOME_NUMBER = 10; static const double SOME_VALUE = 0.1;
上のコードはクラスの外で定義したものですが、クラス内に宣言することもできます。
class Something { public: static const int SOME_NUMBER; static const double SOME_VALUE; ... }; const int Something::SOME_NUMBER = 10; const double Something::SOME_VALUE = 0.1;
static なメンバ変数(静的メンバ変数)は、インスタンスの数によらず常に1つしかないので、const を付けて定数として扱います。
上のようなクラス内に定義された定数へは、次のような形でアクセスします。
Something::SOME_NUMBER
Something::SOME_VALUE
(;^ω^)Java の場合は、「Something.SOME_NUMBER」「Something.SOME_VALUE」ですね
マクロの代わりにこの方法を用いることで、定数が有効なスコープがはっきりします。
ちなみに、静的メンバ関数を使って定数を初期化することもできます。
class Something { public: static const int SOME_NUMBER; static int getNumber() { ... } }; const int Something::SOME_NUMBER = Something::getNumber();
しかし、これまでの方法では次のような場合に問題が発生します。
class Something { public: static const int SOME_NUMBER; static const double SOME_VALUE; double values[SOME_NUMBER]; ... }; const int Something::SOME_NUMBER = 10; const double Something::SOME_VALUE = 0.1;
つまり、SOME_NUMBER が値の定義(初期化)前に使用されるような場合です。
この問題は、初期化を定数の宣言と同時に行うことで解消できます。
class Something { public: static const int SOME_NUMBER = 10; static const double SOME_VALUE; double values[SOME_NUMBER]; ... }; const double Something::SOME_VALUE = 0.1;
一見すると、double の値も同様に初期化できるように思えます。しかし、定数の宣言と同時に初期化ができるのは、整数値に限られています(少なくとも、Visual C++ 2005 Express Edition では、整数値以外の定数で宣言と同時に初期化しようとすると、『スタティック const 整数データ メンバ以外をクラス内で初期化することはできません』というコンパイルエラーが発生します)。また、宣言と同時に初期化する方法では、静的メンバ関数を使った値の定義はできません。
参考文献
- C++(言語解説) const メンバ 下の方には、古いコンパイラ用のコードが載っています。
DATE : 2006/10/08 (Sun)
昔からの友人からの誘いで、遊びに行ってきました。
駅からバスで10分程度のところで待ち合わせていたのですが、少々時間があったので歩いて行きました。
(;^ω^)交通費いらずで安上がりですしね
歩きながら街の風景を眺めていると、見慣れた街でもいろいろな発見があるものですね。いつの間にか新しい店ができていたり、乗り物から見て気になっていたものが何なのか分かったりと、細部まで目に飛び込んできます。大型店の裏道を歩くと、商品をトラックから降ろしていたりと、普段ではなかなか見られないものを見ることができました。
途中で小雨に降られながら、約30分ほどで、待ち合わせ場所に到着しました。若干早めに着いたようで、まだ全員集まっていませんでした。
( ´∀`) それにしても、みんな相変わらず元気でなによりでした