C++

逆アセンブラライブラリ

Win32デバッグ(9)・・・逆アセンブラにまとめてありました。逆アセンブラは特にシステムコールを使うようなものではないので、カーネルモードのコードにも簡単に組み込めます。 個人的にはBSD相当のライセンスかつ軽量なHacker Disassembler Engineで十分だ…

C99が大変excellentで

C++

ブロック途中での変数宣言とインライン関数がサポートされてるから、C++から乗り換えるのに困らないよね! さらに複合リテラルとか素敵だね。 // $gcc -std=c99 -Wall test.c #include <stdio.h> typedef struct { unsigned int x; unsigned int y; } point; void dra</stdio.h>…

C言語のイディオムに潜む未定義

C++

S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル*1を読んでいたら可変長の構造体の利用について、未定義であると書かれていて驚いた。ググってみたら初級C言語Q&Aに次のとおり説明が。 Q 【可変長の構造体】 次のような構造体を…

C言語の構造体の初期化

gccの勉強を始めました、というわけではないのだけど、VC++ばっかりだったのでgcc拡張構文やCとC++の違いに戸惑うことが多い。今回は(次回があるのか?)構造体の初期化について3種類の構文を。

積ん読

なぜか変換できる@Ubuntu 9.04。 ここ1ヶ月ぐらいで技術書だけでもかなり溜まってきた。あと2冊ぐらい増える雰囲気なのでどう考えても赤字;) それにしてもこの冷やし中華、ノリノリである。

for each 文

VC8からの拡張機能で生のC++においてもfor each文が使える。VC8まではコンテナに対してのみだったが、9からは配列に対しても可。知らなかった。 // in vc9 #include <iostream> template<typename T, unsigned long N> inline void for_each_print(T (&array)[N]) { for each (const T& n in array) </typename></iostream>…

#pragma

プログラムに関するすべての情報はソースコード上にあるのが好きだ。プロジェクトのプロパティ(あるいはmakefile)に情報が分散されているのは好きじゃないので、コンパイラやリンカへのオプションはできるだけpragmaを使おうと努めている。 でまあ、またち…

Tupleが要素のコンテナの整列

C++

tuple_comparison.hpp のインクルードが必要みたい。うむむ。こういうの調べるの大変*1。C++好きくないわぁ。 #include <vector> #include <algorithm> #include <iostream> #include <boost/tuple/tuple_io.hpp> #include <boost/tuple/tuple_comparison.hpp> // これがないとビルドできない typedef boost::tuple<long, double, float> Tpl; typedef std::vector<Tpl> TplSet;…</tpl></long,></boost/tuple/tuple_comparison.hpp></boost/tuple/tuple_io.hpp></iostream></algorithm></vector>

CRTを使わない

標準ライブラリなどのCRTを使わないコードを書くためTips #1 Windowsの各種DLLがエクスポートする関数群、すなわちWinAPIのみを使ったコードを書くことでバイナリサイズを劇的に抑えることができる。数KBにまとまることもざらである。 それとは逆にCRTを静的…

shared_ptr の排他制御を抑止する。

C++

BOOST_SP_DISABLE_THREADS マクロについて。私はパフォーマンスが問題になるソースを書いたことが無いし*1、これからも無いのだろうけど、同じようにマルチスレッドのプログラムも殆ど書かないので、活用の機会は少なくないという意味で、これは嬉しい発見。…

英語の本とか

誰でもわかるデバイスドライバ講座 WDMの絵と実装を交えた説明資料。こういう会社に行くにはちょっとプログラミングを知るのが遅すぎた orz ドライバのヒント : すべてのドライバ作成者が知る必要のある事項 Writing kernel-mode drivers in C++: should you…

乱数生成の速度

乱数が必要になったが、速度的なボトルネックになりそうな気がしたので、いくつかの乱数生成関数の速度を調査することにした。実行コードはこんな感じ(random.cpp)で、100000回乱数を生成する。 関数 所要時間(秒) 速度比 rand 0.0063734 x1.00 RtlRando…