GNU dc警告を抑制する方法は?

GNU dc警告を抑制する方法は?

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警告に問題があります。)どの出力が生成されますか?

dcUTF-8はサポートされておらず、バイトで動作します。 utf-8は8ビット(asciiに似た)エンコーディングとほとんど互換性がありますが、完全には互換性がありません。

望むより:https://www.youtube.com/watch?v=MijmeoH9LT4(utf-8のコンピュータオタク)。

関連情報