##なおGauche-glは0.5ではコンパイルが通りませんが、HEADで通るようになってます。Gauche-gl-0.5.1として同時リリース予定。
#あと、このmingw版はGauche-glを含んでます。
##endif は逆にならべないと対応がとれないです。動作に問題はないですが。
#diff --git a/lib/gauche/cgen/unit.scm b/lib/gauche/cgen/unit.scm
index 4f7870a..a7066db 100644
--- a/lib/gauche/cgen/unit.scm
+++ b/lib/gauche/cgen/unit.scm
@@ -225,5 +225,6 @@
(for-each (cut print "#if " <>) cppc)
(gf node)
- (for-each (cut print "#endif /* "<>" */") cppc)]
+ (for-each (cut print "#endif /* "<>" */")
+ (reverse cppc))]
[else (gf node)]))]
[else (gf node)]))
diff --git a/test/cgen.scm b/test/cgen.scm
index 4fa9b29..f22032b 100644
--- a/test/cgen.scm
+++ b/test/cgen.scm
@@ -30,6 +30,6 @@ init_foo_bar();
#if ((defined FOO))||((defined BAR))
some_trick();
-#endif /* ((>= BAR_VERSION 3))&&((== FOO_VERSION 2)) */
#endif /* ((defined FOO))||((defined BAR)) */
+#endif /* ((>= BAR_VERSION 3))&&((== FOO_VERSION 2)) */
}
"
#ああそうか。コメントが変になるのですね。まはろー。
#あと、ドキュメントですが、引数が足りないところが二か所ほど:
#+ (cgen-body "void foo(int n) @{ printf(stderr, \"got %d\\n\"); @}")
#+ (cgen-body (format "void printabc() @{ Scm_Printf(SCM_CUROUT, ~a); @}"
#それぞれ、n と Scm_Printf の fmt 文字列。
#直しました。
#あれ、 ~a はそのままでいいんじゃないですか?
#いえ、Scm_Printfのフォーマット文字列はprintfの拡張なのです。ご覧のとおり私も時々間違えますが。
#あいや、~a はその外側の (format "... ~a..." (cgen-c-name lit)) のじゃないかと。実際、実行するとエラーになります。
#うわほんとだ。
#%Sも~aも必要なんだな。
#そうなんです。