Ada Programming/Pragmas/Restrictions

Summary
The pragma Restrictions is used to forbid the utilization of some language features.

List of language defined restrictions identifiers
Some restrictions are specially marked:
 * Ada 2005 : This is a new Ada 2005 restrictions identifier.
 * Ada 2012 : This is a new Ada 2012 restrictions identifier.


 * Immediate_Reclamation
 * Max_Asynchronous_Select_Nesting
 * Max_Entry_Queue_Length (Ada 2005)
 * Max_Protected_Entries
 * Max_Select_Alternatives
 * Max_Storage_At_Blocking
 * Max_Task_Entries
 * Max_Tasks
 * No_Abort_Statements
 * No_Access_Parameter_Allocators (Ada 2012)
 * No_Access_Subprograms
 * No_Allocators
 * No_Anonymous_Allocators (Ada 2012)
 * No_Asynchronous_Control
 * No_Coextensions (Ada 2012)
 * No_Delay
 * No_Dependence (Ada 2005)
 * No_Dispatch
 * No_Dynamic_Attachment (Ada 2005)
 * No_Dynamic_Priorities
 * No_Exceptions
 * No_Fixed_Point
 * No_Floating_Point
 * No_Implementation_Aspect_Specifications (Ada 2012)
 * No_Implementation_Attributes (Ada 2005)
 * No_Implementation_Identifiers (Ada 2012)
 * No_Implementation_Pragmas (Ada 2005)
 * No_Implementation_Units (Ada 2012)
 * No_Implicit_Heap_Allocations
 * No_IO
 * No_Local_Allocators
 * No_Local_Protected_Objects (Ada 2005)
 * No_Local_Timing_Events (Ada 2005)
 * No_Nested_Finalization
 * No_Obsolescent_Features (Ada 2005)
 * No_Protected_Type_Allocators (Ada 2005)
 * No_Protected_Types
 * No_Recursion
 * No_Reentrancy
 * No_Relative_Delay (Ada 2005)
 * No_Requeue_Statements (Ada 2005)
 * No_Select_Statements (Ada 2005)
 * No_Specific_Termination_Handlers (Ada 2005)
 * No_Specification_of_Aspect (Ada 2012)
 * No_Standard_Allocators_After_Elaboration (Ada 2012)
 * No_Task_Allocators
 * No_Task_Hierarchy
 * No_Task_Termination (Ada 2005)
 * No_Terminate_Alternatives
 * No_Unchecked_Access
 * No_Unchecked_Conversion
 * No_Unchecked_Deallocation
 * No_Use_of_Attribute (Ada 2012)
 * No_Use_of_Pragma (Ada 2012)
 * Simple_Barriers (Ada 2005)

List of implementation defined restrictions identifiers
The following restrictions are not available in all Ada compilers, only in those that had implemented them:


 * GNAT : This is an implementation defined restriction identifier of the GNAT compiler.


 * No_Calendar (GNAT)
 * No_Default_Initialization (GNAT)
 * No_Direct_Boolean_Operators (GNAT)
 * No_Dispatching_Calls (GNAT)
 * No_Elaboration_Code (GNAT)
 * No_Enumeration_Maps (GNAT)
 * No_Entry_Calls_In_Elaboration_Code (GNAT)
 * No_Entry_Queue (GNAT)
 * No_Exception_Handlers (GNAT)
 * No_Exception_Propagation (GNAT)
 * No_Exception_Registration, previously named 'No_Exception_Streams' (GNAT)
 * No_Implementation_Restrictions (GNAT)
 * No_Implicit_Aliasing (GNAT)
 * No_Implicit_Conditionals (GNAT)
 * No_Implicit_Dynamic_Code (GNAT)
 * No_Implicit_Loops (GNAT)
 * No_Initialize_Scalars (GNAT)
 * No_Secondary_Stack (GNAT)
 * No_Select_Statements (GNAT)
 * No_Standard_Storage_Pools (GNAT)
 * No_Streams (GNAT)
 * No_Task_Attributes_Package (GNAT)
 * No_Tasking (GNAT)
 * No_Wide_Characters (GNAT)
 * SPARK (GNAT)
 * Static_Priorities (GNAT)
 * Static_Storage_Size (GNAT)

"Hello, world!" with restrictions
The following sample demonstrates the use of. Note that on Windows, Linux and macOS the given restrictions won't change the generated code.

Wikibook

 * Ada Programming
 * Ada Programming/Pragmas

Ada Quality and Style Guide


|Restrictions Pragmas:Restrictions Restrictions Restrictions