当我遇到似乎常见的Ada83 / Ada95不兼容性时:行中可怕的 ambiguous character literal
错误:
Put ( Disk < Screen and 'P' < 'B' );
我'm new to Ada but not to strongly-typed languages and I understand the issue: there'无法确定文字是 Character
或 Wide_Character
类型,并且该歧义导致编译时错误 .
我的问题是,如何更改上述语句以指定具有给定类型的字符文字(例如,作为 Character
或 Wide_Character
)?我已经阅读了类似的问题(What caused this Ada compilation error "ambiguous character literal"?),他们没有提供RTFM之外的任何指导 . 其他引用(https://gcc.gnu.org/onlinedocs/gnat_rm/Legal-Ada-83-programs-that-are-illegal-in-Ada-95.html)显示字符范围的变通方法,但不显示单个文字的变通方法 .
在另一种语言中,我希望将文字转换为给定的类型,但我对Ada的印象是,不鼓励类型检查(应该?) . 我知道我可以明确地将文字定义为给定类型的常量,但这似乎违背了允许在代码体中使用文字的目的 .
我想这在Ada83代码现代化时是一个非常普遍的问题;消除内联模糊字符文字的最佳做法是什么?
1 回答
使用qualified expression明确标识类型: