manual读取:
检查子程序体的顺序。如果字母o出现在-gnaty之后的字符串中,那么给定范围内的所有子程序体(例如包体)必须按字母顺序排列。排序规则使用正常的Ada规则来比较字符串,忽略字母大小写,除非有后缀数字后缀,则在排序中使用此后缀的值(例如,Junk2在Junk10之前)。
我认为Junk2
为Junk10
而来是一个奇怪的执行风格的实际灵感。但是实际触发它的一些代码的例子是什么?我无法通过无序功能定义或任务组来抱怨这个选项。例如,在使用gnat make -gnatyo
编译以下内容时,我不会抱怨:
procedure Disordered is
function Test return Natural;
function Zest return Natural;
-- disordered function bodies
function Zest return Natural is (1);
function Test return Natural is (2);
begin
null;
end Disordered;
你有:
-- disordered function bodies
function Zest return Natural is (1);
function Test return Natural is (2);
但从技术上讲,这些不是次级方案机构。它们被称为表达函数。这种明确分离的原因是包子规范中不允许使用子程序体,而表达函数则不允许。在示例中使用实际的子程序体将给出预期的样式警告:
function Zest return Natural is
begin
return 1;
end Zest;
function Test return Natural is
begin
return 2;
end Test;
(因为你提到了任务机构;那些也不是子程序机构)