C

Binary Hacks

C

http://0xcc.net/binhacks/quiz.html 53点だった。まだまだ修行が足りないな。Q1、3、5、6、8、9、10、11が正解。 これは得点を競うというよりも、どのくらいネタとして楽しめるか、というものな気がする。Q2の?f@@YAXXZはVC++のマングリング名だとか。 Q2の…

issigned

C

問題 → http://d.hatena.ne.jp/kikx/20061106#1162810655 左辺値の回答 → http://d.hatena.ne.jp/kikx/20061117#1163784840ANSI準拠じゃないけど、一応動くものができた。わーい! 前半はインチキだし、後半はkikx氏のそのままだけど。 http://firewood.txt-…

issigned

C

http://d.hatena.ne.jp/kikx/20061106#1162810655 さっぱりわからない... VC++で試していたら、char型で#define issigned(t) ((t += 128) が常にゼロになっている。 GCC(3.4)だとwarning: comparison is always false due to limited range of data typeと警…

_TCHAR / TCHAR について考える 頭の T って、何の略だろう…テキストマクロ _TEXT から来ているのでは。意味合いとしてはinternationalized textまたはgeneric textっぽいけど。TCHARと_TCHAR TCHARと_TCHARのどちらを使うか悩むこともあるんだけど、tchar.h…

無名メンバ

C

いまさら知ったCの構文。struct hoge { int a; }; struct hogehoge { struct hoge; int b; }; ... struct hogehoge hogera; hogera.a = 0;これを使うとCで継承もどきができるみたい。 VC++6.0だと通るが、GCCでは通らなかったので拡張構文ぽい。

mallocとdouble

C

「第67回カーネル読書会のビデオと資料」でnoocyte氏が寄せているコメントについて。・malloc() はその仕様上,どんなデータ型にも適合するようアラインされた アドレスを返さなければならない. ・普通32ビット CPU では,最もアラインメントの厳しいデータ…

YLUG第67回カーネル読書会

glibc(たぶん2.x)のmallocのお話。→ 革命の日々! カーネル読書会で講演してきましたkosaki氏は細かいところまで広く深く知っていて、設計者&実装者の代弁者たりえているところがすばらしい。 内容は、 ・K&Rのmalloc(約20行)は割と偉大 ・fragmentatio…

__FUNCTION__と__LINE__の文字列化

Linux kernel用に自作の簡易トレーサを使っている。 1つのチェックポイントあたり、16バイトの情報を記録しておいて、あとでダンプするというもの。16バイトというのは、 u32 timestamp; // タイムスタンプ const char *message; // メッセージ u32 param[2]…

数値の文字列化

C

デバッグ文を埋め込むとき、 ほげ発生 at function_x:nみたいに、「関数名:行番号」を付加したいと思うことはよくある。GCCには__FUNCTION__という組み込みマクロがあり、Linuxでは__FUNC__という名前で定義されている。これがこの用途に使えるのだが標準化…

プリプロセッサの不思議

C

わかってる人には不思議でも何でもないのだが。 /* マジックナンバーを書きたくないのでenumを使う */ enum { VERSION_INVALID, VERSION_1, VERSION_2, };/* 現在はバージョン2 */ #define CURRENT_VERSION VERSION_2/* バージョン番号表示 */ void print_ve…