Ada 如何明确地指定字符文字

Ada 如何明确地指定字符文字,ada,Ada,在我完成“与Ada 95会合”的过程中,我遇到了一个看似常见的Ada83/Ada95不兼容问题:行中出现了可怕的模糊字符文字错误: Put ( Disk < Screen and 'P' < 'B' ); Put(磁盘

在我完成“与Ada 95会合”的过程中,我遇到了一个看似常见的Ada83/Ada95不兼容问题:行中出现了可怕的
模糊字符文字
错误:

Put ( Disk < Screen and 'P' < 'B' );
Put(磁盘<屏幕和'P'<'B');
我不熟悉Ada,但不熟悉强类型语言,我理解这个问题:无法确定文字是
字符类型
还是
宽字符类型
,这种歧义会导致编译时错误

我的问题是,如何更改上述语句以指定具有给定类型的字符文字(例如作为
字符
宽字符
)?我读过类似的问题(),除了RTFM之外,它们没有提供任何指导。其他引用()显示字符范围的变通方法,但不显示单个文字的变通方法

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

我想这是Ada83代码现代化时的一个非常常见的问题;消除内联不明确字符文本歧义的最佳实践是什么?

使用a明确标识类型:

Put ( Disk < Screen and Character'('P') < Character'('B') );
Put(磁盘<屏幕和字符'('P')<字符'('B'));

谢谢!一位朋友还建议从
Ada.Characters.Handling
中使用
来处理字符,但你的答案似乎更符合意图(指定特定类型和值的对象,而不是使用函数调用返回特定类型的对象)。@arclight:同样,
Ada.Characters.Handling
成为2005年的Ada;它被
Ada.Characters.Conversions
@trashgood取代-并不是所有的Ada.Characters.Handling都被禁止。附件J中仅禁止使用函数“Ada.Characters.Handling中的from Is_Character to to to_Wide_String”。除非您有