Ada 编程/编译指示/抑制
外观
编译指示 Suppress 抑制编译器生成的运行时检查。如果运行时检查被禁用,异常可能会被抑制,并且可能导致未定义的行为。 编译指示 Suppress 由程序员自行承担风险使用。
可以抑制的检查有
- Access_Check - 检查空访问值的解引用。Constraint_Error 被抑制。
- Accessibility_Check - 检查对不可访问的对象或子程序的访问。Program_Error 被抑制。
- Discriminant_Check - 检查对辨别式记录中不可用组件的访问(鉴于辨别式)。Constraint_Error 被抑制。
- Division_Check - 检查除以零。Constraint_Error 被抑制。
- Elaboration_Check - 检查未详细说明的包或子程序体。Program_Error 被抑制。
- Index_Check - 检查数组索引是否超出范围。Constraint_Error 被抑制。
- Length_Check - 检查数组长度违规。Constraint_Error 被抑制。
- Overflow_Check - 检查数字溢出。Constraint_Error 被抑制。
- Range_Check - 检查标量变量的取值范围。Constraint_Error 被抑制。
- Storage_Check - 检查是否有足够的存储空间来容纳子程序调用。Storage_Error 被抑制。
- Tag_Check - 检查对象标签是否无效。Constraint_Error 被抑制。
- All_Checks - 上述所有检查
My_Array : Array ( 1 .. 100 ) of Integer;
pragma
Suppress( Index_Check );
...
Some_Variable := My_Array( 1000 ); -- Erroneous execution, here we come!