以下のメッセージを削除します。


[1878] crowbar_book_ver4について
返信


投稿者:RednaxelaFX
2013/11/24 03:34:37

Link:http://rednaxelafx.iteye.com
こんにちは、@rednaxelafxことKrisと申します。
たぶん「はじめまして」ではないかと、Twitterで検索したところ、たしかにもっと前から挨拶をしました(笑)
https://twitter.com/rednaxelafx/status/14597568550

Web連載も結構前から読みましたが、「プログラミング言語を作る」が本になって本当に嬉しかったです。
去年中国の編集さんにこの本を強く薦めました。いまはやっとその中国語翻訳版が買えるようになりまして、自分のブログでこの本を押したいと思います。

このたびはcrowbarについてちょっと聞きたいことがあります。
本のサンプルコードをこちらからダウンロードしました:
http://kmaebashi.com/programmer/devlang/book/unix_utf8_20091228.tgz

その中のcrowbar_book_0_4ですが、interface.cでのrelease_global_strings()がこうなっています:

static void
release_global_strings(CRB_Interpreter *interpreter) {
    while (interpreter->variable) {
        Variable *temp = interpreter->variable;
        interpreter->variable = temp->next;
    }
}

この関数がもともと何をしようとしてますか?このままだと、ループしなくても、直接に interpreter->variable = NULL でも同じではないですか?

もしかしたらこうしたかったとか:

static void
release_global_strings(CRB_Interpreter *interpreter) {
    while (interpreter->variable) {
        Variable *temp = interpreter->variable;
        Variable *temp_next = temp->next;
        temp->next = NULL;
        interpreter->variable = temp_next;
    }
}

パスワード:

管理者削除