自殺関数
どうでもいいことかもだけど、
クロージャーがサポートされている言語でこれが出来るのはそれほど驚かない。が、Cでも出来てしまう。久しぶりにCodePadのお世話に。
これは間違い。単に
*point = NULL;
がコード領域なので書き込み違反になっているだけ。実際
int main (){ pointless(); puts("----"); // 表示されない pointless(); return 0; }
どうしてもやりたければ弾さんが rubyでやったように
void (*lpPointless)(); void pointless(){ fprintf(stderr, "turing off myself = 0x%X\n", (int)pointless); /* pointless = NULL */ lpPointless = NULL; } int main (){ lpPointless = pointless; lpPointless(); puts("-----"); lpPointless(); return 0; }
とかすべき。まあ意味無いんだけどね ^^;