ヨーキョクデイ

いろいろ雑食

Firefox Hacks Rebooted を買ってみたらいきなり誤植を発見した件

ちらっと眺めてみたら妙な記述を発見したので。
6 章の js-ctypes におけるポインタ操作について JS のコードとの比較をするセクションでのことなんだが、C 言語での記述が怪しい。特に p. 457 より引用すると、

unsigned int[] counters = {0, 1, 2, 3, 4, 5};
unsigned int *countersPointer = &counters;
printf("%d", countersPointer[3]); /* 3 */

1 行目は明らかに文法エラーであって、2 行目もポインタの渡し方が怪しい。直すならこうか。

unsigned int counters[] = {0, 1, 2, 3, 4, 5}; /* [] の位置 */
unsigned int *countersPointer = counters; /* あるいは &counters[0] */
printf("%d\n", countersPointer[3]); /* \n */

JS 版で dump の引数にわざわざ "\n" を付けたなら、C 版の printf でも同様にしたいことも含めて。これらはこの周辺に共通するツッコミであるよ。
正誤表 は今のところ何も載ってないね。
それはともかく、js-ctypes の進化具合は気になるよねー。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック


このように、C 言語の文法は非常に害悪であり、バグの温床であるため、より洗練された D 言語に即刻移行すべきである。