如何明确指定字符文字

How to unambiguously specify a character literal

由于我一直在研究 "Rendezvous with Ada 95",所以我 运行 发现了一个看似常见的 Ada83 / Ada95 不兼容性:行中可怕的 ambiguous character literal 错误:

Put ( Disk < Screen and 'P' < 'B' );

我是 Ada 的新手,但不是强类型语言,我理解这个问题:无法确定文字是 Character 类型还是 Wide_Character 类型以及这种歧义导致编译时错误。

我的问题是,如何更改上面的语句以指定具有给定类型的字符文字(例如作为CharacterWide_Character )?我读过类似的问题 () and they don't provide any guidance beyond RTFM. Other references (https://gcc.gnu.org/onlinedocs/gnat_rm/Legal-Ada-83-programs-that-are-illegal-in-Ada-95.html) 显示字符范围的解决方法,但不是单个文字。

在另一种语言中,我希望将文字转换为给定类型,但我对 Ada 的印象是不鼓励绕过类型检查(应该?)。我知道我可以明确地将文字定义为给定类型的常量,但这似乎违背了在代码主体中允许文字的目的。

我认为这是对 Ada83 代码进行现代化改造时非常常见的问题;消除内联歧义字符文字歧义的最佳做法是什么?

使用 qualified expression 明确标识类型:

Put ( Disk < Screen and Character'('P') < Character'('B') );