2009-04-01から1ヶ月間の記事一覧
最近アキラさん(id:faith_and_brave)からいろいろ本を借りて読んでるのですが、その中でも関数プログラミング作者: R.バード,P.ワドラー,武市正人出版社/メーカー: 近代科学社発売日: 1991/04/01メディア: 単行本購入: 7人 クリック: 82回この商品を含むブ…
とエラー吐く。 enum { hoge }; template<class T> void foo(T) { } foo(hoge); // エラー: テンプレート引数は無名の型を参照できません ARM コンパイラの標準の準拠度が高くて目から鱗が落ちまくり。</class>
実機用のバイナリを作る方法についてはstd::vector と例外と+αを使ってる状態で実機用のバイナリを作る方法を参考にして貰うとして、ここでは Visual Studio でどうやって実機用バイナリを作るかというのを説明します。 といっても単純にカスタムビルドを使…
とりあえず実機でも一通り動くような感じになってきたので、RVCT3.0 で実機用のバイナリを作る方法をまとめてみようと思います。 事前知識 ずっと勘違いしていたのですが、BREW ではもはやグローバル変数は使えます。 elf2mod というツールが Qualcomm から…
単純に考えると、 IEnumerable<IEnumerable<int>> values = ...; IEnumerable<int> result = new List<int>(); foreach (IEnumerable<int> v in values) { result = result.Concat(v); } こんな感じなんだろうけど、これって Accumulate じゃん!とか思ったので、こんなのは拡張メソッドにあ</int></int></int></ienumerable<int>…
RVCT3.0 の ARM コンパイラは、ちゃんとコンパイラオプションを指定することで日本語エラーを出力してくれます。英語を直訳したような日本語な感じもするけど、それでも自分にはとっても便利。 以下のフラグを設定すると日本語になります。 --message_locale…
まだ実機で動かせないので、とりあえずコンパイルを通すだけ。 まず当然のごとく new と delete は再定義するべき。 void* operator new(std::size_t size) throw(std::bad_alloc) { return MALLOC(size); } void* operator new[](std::size_t size) throw(s…
ARM Information Center Table C.2 shows the major features of the language supported by this release of RealView Compilation Tools for BREW C++. Major feature ISO/IEC standard section Support Core language 1 to 13 Yes Templates 14 Templates…
を include すると芋づる式に が include されて、そいつが fpu none だとコンパイルエラーになるという罠。 まあ最終的に浮動小数点使ってなければリンク時に解決するんだろうけど……なんかやだなぁ。
そしてコンパイルエラー山盛りキター! 出たエラー・ワウォーニングとか。 Warning: 初期化リストが定義の順番じゃない 順番どおりに並べた std::bad_alloc が見つからない を include std::out_of_range が見つからない を include 以下のコードは式が左辺…
で、面白い記述発見。 暗黙のインクルード 暗黙のインクルードがイネーブルになっているとき、.h ファイルで宣言されたテンプレートエンティティのインスタンス生成のために定義が必要な場合は、コンパイラは対応する .cc ファイルを暗黙にインクルードして…
例えば shared_ptr を this の代わりに使うことができる。 struct Hoge { void foo() { } }; boost::shared_ptr<Hoge> h(new Hoge()); boost::bind(&Hoge::foo, h)(); boost::bind(&Hoge::foo, _1)(h); でもこれを自前のクラスにしてしまうと、途端に動作しなくな</hoge>…
とは思うものの、容量がかなり増えそうなので怖いところ。 bind はまあ、それぞれ用のストレージクラスを作るのと大して変わらない気はするんだけど、function は結構ごちゃごちゃした処理が多いから怖い。 ただ、function は Type Erasure のせいで大きくな…
まあいくつか方法はあると思うのです。 デフォルトコンストラクタでとりあえず構築しておいて後でもう一度 init() とか呼んで初期化する2段階初期化とか、バッファだけ用意しておいて後で placement new をしてやる遅延初期化とか、もうあきらめて普通に new…
昔に作ったライブラリのフォントクラスとあまり違わなかったり。id:melpon:20090324(文字列をテクスチャ化する)で使ってます。 BREW2.x は非対応でつ(多分スモールフォントあたりちょっと弄れば動くけど)。