作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
"字到底有什么作用?-6ren"> "字到底有什么作用?-我胡思乱想,想弄明白,就写了个简单的词来测试一下: : test ." compile time" DOES> ." runtime" ; 问题是,这个词的行为方式根本不一致。它的输出似乎取决于许多因-6ren">
我胡思乱想,想弄明白,就写了个简单的词来测试一下:
: test ." compile time" DOES> ." runtime" ;
问题是,这个词的行为方式根本不一致。它的输出似乎取决于许多因素,例如:
此外,有时它根本不打印任何内容。
(使用 Gforth)
最佳答案
这是您的代码:
: test ." compile time" DOES> ." runtime" ;
输入后,我可以使用你的词而不你遇到的模棱两可的行为:
CREATE def 12345 , test \ prints "compile time"
它打印编译时间
,因为这是您在DOES>
之前编译到test
中的行为。注意:这实际上并没有在编译时运行。
DOES>
结束了单词的定义,但是改变了它 test
也修改了最后定义的单词,这样它就把它的数据域地址放到了栈上,并且然后运行在 DOES>
之后发现的行为。
使用我创建的词,它具有您定义的实例化行为,遵循推送地址的隐式行为:
def @ . \ prints runtime 12345
Forth 2012 注意:根据 Forth 2012 中 DOES>
的定义,如果最后一个词没有用 CREATE
定义,这将导致不明确的行为。但是,Gforth 允许修改任何单词定义。
我希望这个例子有助于解释为什么通常在使用 DOES>
的定义中使用 CREATE
,但它肯定不是必需的。
关于forth - "DOES>"字到底有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64919966/
我是一名优秀的程序员,十分优秀!