我最近偶然发现了与此类似的代码,它是在 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 模式下编译时会出现这种差异?