我使用--red-only
开关,将详细程度设置为2,将一个非常简单的Red程序编译为Red / System等效项。该计划是:
Red []
red-load: func [source [file! url! string! binary!]] [
load source
]
它产生一定量的输出,我将其重定向到文件。我的目标是为此添加一个Red / System标头并构建它。
在删除一些评论行之后,下一个障碍是此代码至少没有扩展某些宏,因此我必须为runtime/macros.reds添加#include
。但后来我在其中一个(宏TO_CTX)的扩展中遇到了这个错误:
*** Compilation Error: invalid target type casting: red-context!
*** in file: %/home/hostilefork/Projects/red/embedme.reds
*** in function: f_modulo
*** at line: 11
*** near: (as red-context! ((as series! ctx15/value) + 1))
我在Red运行时代码中看到了red-context!
和其他一些red-*!
数据类型......当Red / System需要讨论它从Red获取的值时。但他们没有被提及in the Red/System spec。它们可以用在普通的红色/系统代码中,还是只有内部的“特殊”允许它们?
答案 0 :(得分:3)
如果要获得完整的红色/系统输出,则详细程度2不是正确的设置,详细程度应设置为3(-v 3
)。我从来没有尝试过编译这样的输出,所以我不确定它是否会起作用。 --red-only?
选项用于调试高级Red编译器的Red / System输出。
red-*!
定义是红色内部结构上的宏,它们不是Red / System的一部分。它们在红色runtime library中定义。