2

我最近偶然发现了与此类似的代码,它是在 Ada 95 模式下编译的,而不是在 Ada 2005 模式下编译的:

with Ada.Text_IO;

procedure Test is
  
   Printable_Char : constant Character := '["20"]';
   Non_printable_Char : constant Character := '["00"]';
begin
   
   Ada.Text_IO.Put_Line (Printable_Char & Non_printable_Char);
   
end Test;

使用 FSG GNAT 9.3.0:

test.adb:6:48: (Ada 2005) non-graphic character not permitted in character literal

但是使用标志编译OK -gnat95(Ada 95模式)。

我在GNAT RM的“11.6 Wide Text IO”一章中找到了这种格式的一些参考资料。这种格式是 GNAT 特定的吗?

关于语言版本模式的差异,我在Ada 2005 Rationale中没有提及。那么,为什么在 Ada 2005 模式下编译时会出现这种差异?

4

1 回答 1

3

这在Ada 2012 语言参考手册中有记录

相关的报价是:

 -- The declaration of type Character is based on the standard ISO 8859-1 character set.

  -- There are no character literals corresponding to the positions for control characters.
  -- They are indicated in italics in this definition. See 3.5.2.
于 2021-12-10T20:59:05.560 回答