manual的内容为:
检查子程序主体的顺序。如果字母-出现在-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;
答案 0 :(得分:5)
您有:
-- 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;
(并且由于您提到了任务主体;它们也不是子程序主体)