謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

C言語

scope_exit文

GCC拡張のcleanup attribute使えば簡単にscope_exit文を作れそうだな、と思って作ってみた。ネスト関数のプロトタイプ関数に使うautoとか初めて使った。 #include <stdio.h> #define scope_exit() \ auto void on_scope_exit(void *ptr);\ __attribute__((cleanup(on_</stdio.h>…

デストラクタ/スマートポインタ

C言語でデストラクタ及びスマートポインタを実装した人が居るらしい。何というタイミング。GCC拡張のcleanup attributeを使っているので、使い道は少なそう。それと、メモリをスタックからじゃなくてヒープから取得してるのが気になる。[C] Implementing sma…

右辺値参照とムーブセマンティクス

C++11は良く分からんので、C言語で。参照でもないけど、実装は似たようなもん。デコンストラクタ問題やオーバーロードや演算子オーバーライドが無いので別物だけど、これはこれで使い道ある気がする。moveについては、safe_freeのような趣きがあって良ろしい…

Coccinelleを使ってみる

sudo aptitude install coccinelle でインストール。 マッチングには*使えって書かれてるけどハイライトしてくれないで-になるので、以下のようにするしか無さそう。 @@ expression e; @@ - (int) e + ((int) e)ざっと見簡単で非常に良さげ。 型や関数や変数…

cscope

gtags (global)より良いらしい。後で試す。

gccのインラインアセンブラが使いにくい

asm ("movb %%bh, %%al\n" : "=a" (rv) : "b" (x)); これのレジスタ依存をやめたい(=qとqにしたい)訳だけどどうすればいいやら。 正解は以下らしい。どのドキュメントに書いてあったんだろうか。 asm ("movb %h1, %b0\n" : "=q" (rv) : "q" (x)); あとインラ…

bsf

ちょうど取りかかってたところ、数日前に2chでも話題出てたようだ。そこにあったのが凄すぎたので真似てみた(もとのは0-9までだったので、0-31までにし、0で32を返すようにした)。70338351は総当たりで最初に出たもので、テーブルサイズは最適化していない。…

GNU indentが意外と使えない件

使えない。もっと賢くなってくれてもいいのに。 って書いたけど、ただのバグな予感。 uncrustifyやastyleというのもあるらしい。 uncrustify良い。凄く良い。 設定が多くて混乱するけど、凄くお勧め。 uncrustifyに重大なバグ見つけた予感。 mod_full_brace_…

コールグラフおもろー

はいいんだけど、本当に欲しいのは関数を依存が少ない順に並び替えるもの。 cflow通した結果から簡単に求められるはず。今時間無いので後で書く。 とりあえずコールグラフ。 http://bazaar.launchpad.net/~lovesyao/+junk/tools/files/lovesyao%40hotmail.co…

プリプロセッサ最強説

boost::preprocessor見てそんなふうに思った。エラーとかは不自由そうだけどtemplateが万能ではないことが良くわかる。 それとc++0xは個人的に期待外れになりそうな感じ。 c++0xのwhereってtemplateにprivateを付けられるようにすれば解決す…しないのか。こ…