c

gcc の -Wall 以外の警告オプション

c c++

以前同僚の光成さんが、以下の warning オプションを使っていると書かれていたのが気になったので調べてみました。 -Wall -W -Wformat=2 -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wfloat-equal -Wpointer-arith もし上記以外にも良さげなオ…

fread の戻り値について

Tremor の実験で発覚した fread の戻り値の問題。 Mona の fread はファイルが読めないときは -1 を返すが、手元の Linux の fread は 0 を返している。 こういうときは「man fread」 返り値 fread() と fwrite() は読み書きに成功した要素の個数を返す。エ…

続 Tremor移植

例の undefined reference to `__divdi3' のリンクエラーはとりあえず場当たり対処。 libgcc.a をリンクすればよろし。 /usr/lib/gcc/i586-mingw32msvc/3.4.5/libgcc.aTremor のサンプルプログラムのコンパイルも通った。 ov_open_callbacks(fp,&ovf,NULL,0,…

Tremor移植できるかな?

Tremor は整数演算だけで Ogg Vorbis を decode してくれるライブラリ。 trunk/Tremor The source code to the integer-only Ogg Vorbis decode library named 'Tremor'.そもそも trunk だけで安定版リリースがないのが不安だ。 Tremor-r13614/vorbisfile.o:…

ポインタ

c

リニアアドレス決め打ちでとか良くやるのでポインタに対する感覚が麻痺しているな。 アドレス決め打ちで構造体のポインタにキャストして宝探し的な。 Hoge* p = (Hoge*)0xA0000000; いまだにぱっと頭に浮かぶのは32bitな旧世代というのも哀しい。 追記 こん…

末尾再帰最適化をC/C++上で検知してみたい

C C++

某所で「処理系が末尾再帰最適化をしているかを、処理系で動くコードから判定できるか」的な話をふったところ C/C++ なら出来そうだよねと id:yaneurao さんからツッコミが。 やってみよう。 最適化されているなら is_tail_rec_opt_internal の引数である le…

CとC++の混在時に悩む

C C++

Monaでのコーディングは基本 C++ なのだけどシステムコールや uIP など C で書かれたアプリケーションが混じるときに微妙。 enum を使って下の IP::ICMP のように定数を定義していても、Cが混じる場合は使えない。(namespace も同様) class IP { public: enu…

んー構造体のあれあれ

C

んー。ほらあれだよ。構造体でフラグとか作るときにあれあれ。 「ビットフィールド」という名前が出てくる前に20秒ほどかかる件。

継続ライブラリ libcont を書いたよ

libcont という継続ライブラリを書いてみました。 何ができるの? ある場所で状態を保存し、その後その場所から実行を再開できます。 setjmp/longjmp では実現できない深い方向へのジャンプ可能なのが特徴です。 ダウンロード http://sourceforge.net/project…

setjmp用の__jmpbuf の スタックポインタがエンコードされている件

継続ライブラリを書くのに、setjmp を使えば(ある程度)可搬性が維持できると思い実験していたら見事にはまった。 setjmp が使う jmp_buf にはスタックポインタやら汎用レジスタが保存されていて、それらを書き換えて longjmp してあげれば好きな状態に復帰…

購入

定本 Cプログラマのためのアルゴリズムとデータ構造 (SOFTBANK BOOKS)作者: 近藤嘉雪出版社/メーカー: ソフトバンククリエイティブ発売日: 1998/03メディア: 単行本購入: 11人 クリック: 169回この商品を含むブログ (77件) を見る