首页 文章

如何明确指定字符文字

提问于
浏览
3

当我遇到似乎常见的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'无法确定文字是 CharacterWide_Character 类型,并且该歧义导致编译时错误 .

我的问题是,如何更改上述语句以指定具有给定类型的字符文字(例如,作为 CharacterWide_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 回答

  • 4

    使用qualified expression明确标识类型:

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

相关问题