C++
VCでUNICODEにするのは、プロジェクトの設定。 しかし、それではアプリの中がUNICODEで動作するようになるだけ。 その文字列をファイルに出力しようとしてもUNICODEにはならない。 はじめはそれがとても不思議な感じがしたが、いまではそっちのほうがしっく…
C++テンプレートテクニックを買ってお勉強。 テンプレートの特殊化を利用して、いままで使っていたライブラリを一部書き換え。 構築した部分は問題なく実装できたが、いままでやっていたことができなくなった・・・ どちらともいえない、どちらともいえない。 …
昨年末、隣席の人がEntier(Hitachiの組み込みDB)のライブラリを書いてた。 ちょいちょい見たり話をしたりしていたが、同じようなものを書くことになった。 もっとちゃんと聞いておけばよかった… 基本は、JavaのJDBCのクラスを参考。 class Connection; class…
SQLを8年ぶりぐらいに書いた。 SQLite関係なく、ぜんぜん書けない。 PrimaryKeyを複数のカラムで指定する create table sample (id integer, age integer, name text, primary key(id, age) ) primary key を後でまとめて指定するとできる。 SQLiteでは、pr…
いままで知ってはいたが、使うことがなかったのでとりあえず使ってみる。参考:SQLiteで組み込みDB体験 (1/3):CodeZine(コードジン) 参考の環境 SQLite 3.3.5 VisualStudio2005Express こちらは、環境 SQLite 3.6.14.2 VisualStudio2008ProfessionalEditi…
この間の続き。 Inf/NaNは計算の失敗時に発生する値。 この値がでるとそのあとの処理はうまくいかない。そのときに判定を間違えると面倒だよ。。 if( _finite(value) != 0 ) // Inf/NaNである Inf/NaNを判定するには、_finite を使うこと。 if( DEF_NaN == v…
NaNやInfなどの特殊な値 http://exlight.net/devel/fp/value_class.html によると、 NaNはたくさん、InfとZeroはふたつ あると。 きちんと調べてみなければ。 こんなことあまり気にしたことがなかった。 いままでは、NaNが発生しないように計算させていたが、…
typedef std::complex<double> COMPLEX; COMPLEX plus_1(COMPLEX a, COMPLEX b) { return a + b; } COMPLEX plus_2(const COMPLEX& a, const COMPLEX& b) { return a + b; } COMPLEX plus_2_1(COMPLEX& a, COMPLEX& b) { return a + b; } COMPLEX plus_2_2(const COM</double>…
MATLABで外部プログラムを開発する場合は、CやFORTRANが利用できる。 DLLを作るような感じになるが、単純なDLLではない。 mexという形式でMATLAB上でコンパイルする。 mex Test.c なんてすると、 Test.mexw32 ファイルが生成されて、 lh = Test(rh0, rh1) み…
const double DEF_Zero = 0.0; // コンパイラエラーをごまかす const double DEF_Inf = 1.0/DEF_Zero; const double DEF_NaN = 0.0/DEF_Zero; 1.0/0.0 0.0/0.0 は、コンパイルで怒られる。 そのために、ひとつはさむ。何で定義されてないの?
assertを使って、事前条件チェックとかしてもリリース版でどうしても その値が来てしまったら、、、 結局エラー処理を書かなきゃいけない。 assertがあるから、条件クリアとはならない。 なら、assertは使わないほうがいいのか?
VisualStudio2005 の VisualC++2005でコード分析を使ってみる。 Visual C++ 2005 コード分析概要 http://msdn.microsoft.com/ja-jp/security/bb905844.aspx いくつか問題点を指摘された。 Debug版だけONしたけど、Release版でもONにしたほうがいいかな? 指…
これをどっかのサイトで見て、Clipしてたやつ http://www.pvv.org/~oma/cpp0x_aquadi_nov_2007.pdf ・right angle brackets std::vector> matrix; みたいなことができるみたい。 すっきり。
Boost C++をチューンアップする最先端ライブラリ忙しくて、あんまり読めてません。 もっとゆっくりと読みたい。Boostを使ってみたいけど、むずかしそう〜!って 思っている方、ちょっと本を読んでみましょう。 新しい世界が開けるかもしれません。いままであ…
class hoge; boost::shared_ptr<hoge> p_hoge(new hoge); if( p_hoge.get() != NULL ) { } とか書いてたけど、 if( p_hoge ) { } でいいそうだ。 知らんかった。</hoge>
どっかのプロジェクトのソースを全面的に修正することになった。その原因は、const。 ひとつのクラスをきれいに修正して、constつけたりなんやかんや。そうすると、const地獄に・・・ 次から次に修正する必要が・・・ 結局1/3程度のファイルに修正が入った。 これ…
std::stringstreamを使いまわす場合、初期化したいです。 clear() メソッドがいますが、初期化されません。 文字列を初期化するには、 str(""); と、しなければならない。いつも引っかかる… なにかいい覚え方はないか。