如何在GNU dc中进行分支? OpenBSD的实现有一个带有else-branch的条件,但是GNU没有...所以你可以有条件地执行一个宏,但是当它完成时它会让你回到代码中的同一个地方。
似乎可以通过在堆栈上留下一个sentinel值来实现,但这很容易出错(特别是因为dc不能进行字符串比较,所以我们留下了只是数字的哨兵)。
可能与q / Q有关吗?
这甚至可能吗?
答案 0 :(得分:3)
我想我明白了!
通过在子宏中使用q / Q,我返回到调用宏之上的一个级别,从而跳过调用者中的任何其他代码。如果我有条件地调用子宏,这会使调用宏的其余部分成为" else"分支。
[[Input is an odd number.]P]sa
[[Input is an even number.]Pq]sb
[2%0=blax]sc
1lcx
Input is an odd number.
2lcx
Input is an even number.