DCで無効または未定義のコマンドを実行すると、通常警告のみが印刷されます。例:
cp
dc: stack empty
ほとんどの場合、問題はありませんが、必要な作業が実際に機能するときに迷惑な状況があります。次の例を考えてみましょう。
5 6+sИlИp
dc: 0230 unimplemented
dc: 0230 unimplemented
11
願いより?マニュアルのレジスタ以外のレジスタを使用しても、動作します。 (「正式には」256ですが、NULバイトをどのように使用できますか?)
常に良い考えではないかもしれませんが、今、DCは特定のスクリプトでそのような警告を表示したいと思います。
DCで警告が印刷されるのを防ぐ方法は?
答え1
これらのエラーは、Gnu(そして私の考えではすべての最新のUnix)がutf-8を使用しているマルチバイト文字のために発生します。
だから
dc <<< "5 6+s¢l¥p"
$と$のdc <<< "5 6+s¢l¢p"
最初のバイトは同じで、レジスタのアドレスとして使用されます。 2番目のバイトではエラーが発生します。
出力ビューod
#↳ od -ta -to1 <<< "5 6+s¢l¥p"
0000000 5 sp 6 + s B " l B % p nl
065 040 066 053 163 302 242 154 302 245 160 012
したがって、このエラーは有効なので無視してはいけません。
このテストケースを試してください。dc <<< "4s¢11s¥l¢p"
どのような結果を期待していますか? (dc
警告に問題があります。)どの出力が生成されますか?
dc
UTF-8はサポートされておらず、バイトで動作します。 utf-8は8ビット(asciiに似た)エンコーディングとほとんど互換性がありますが、完全には互換性がありません。
望むより:https://www.youtube.com/watch?v=MijmeoH9LT4(utf-8のコンピュータオタク)。