Ada2012:在Root包规范中定义Assertion_Policy是否影响整个包层级?
问题解答
不会对整个包层次结构产生影响。
根据Ada 2012 RM中关于Assertion_Policy的规定:
Assertion_Policy编译指示适用于特定区域内指定的断言方面,并且适用于该区域内指定的所有断言表达式。在声明部分或直接在包规范中给出的Assertion_Policy编译指示,其作用范围从该编译指示的位置开始,到最内层封闭声明区域的末尾。作为配置编译指示给出的Assertion_Policy编译指示,其作用范围是它所适用的整个编译单元(或多个单元)的声明区域。
在你给出的包层次中,Root的子包(Child1、Child2、GrandSon、Child3)都是独立的编译单元,各自拥有自己的封闭声明区域。在Root包规范中定义的Assertion_Policy编译指示,仅作用于Root包规范自身的声明区域,无法延伸到其下属的子包或更深层级的包中。如果需要让该编译指示影响整个包层次,需要将其作为配置编译指示来使用。
内容的提问来源于stack exchange,提问作者Albatros23
相关产品推荐
相关产品推荐

