我有以下匿名子类型的声明:
testConstraint : Integer Range -5 .. 5;
然后,在分配时:
testConstraint := -6;
为什么我没有Constraint_Error
?
其他详情:
pragma suppress
个语句(尽管通过with
添加了一些文件; gprbuild
完成构建
-gnatf -gnatp -gnat2012 -d
答案 0 :(得分:6)
正如@Timur和@theMayer所说:
-gnatp
会抑制所有检查。
来自文档:
<强> -gnatp 强>
此开关导致单元被编译,就好像源中存在pragma Suppress(All_checks)一样。有效性检查 也被消除了(换句话说-gnatp也暗示-gnatVn)。使用 这个开关以牺牲代码来提高代码的性能 存在无效数据或程序错误时的安全性。
抑制所有检查是一个非常糟糕的主意。您可以针对特定单位执行此操作,如果您已经证明不需要检查(例如使用SPARK),和您已经测量到抑制所有检查可以提高性能你需要。
解决方案是使用添加编译器标志-gnat-p
(然后 - 如果满足要求 - 禁止检查单个文件)。