跳转到内容

Ada 编程/编译指示/限制

来自维基教科书,开放的书籍,为开放的世界

Ada. Time-tested, safe and secure.
Ada. 经久耐用,安全可靠。

Restrictions 编译指示用于禁止使用某些语言特性。

语言定义的限制标识符列表

[编辑 | 编辑源代码]

一些限制具有特殊标记

Ada 2005
这是新的 Ada 2005 限制标识符。
Ada 2012
这是新的 Ada 2012 限制标识符。

实现定义的限制标识符列表

[编辑 | 编辑源代码]

以下限制并非所有 Ada 编译器都支持,仅在那些已经实现它们的编译器中可用

GNAT
这是一个 实现定义的限制标识符,属于 GNAT 编译器。

"Hello, world!" with restrictions

[编辑 | 编辑源代码]

以下示例演示了pragma Restrictions的使用。请注意,在 Windows、Linux 和 macOS 上,给定的限制不会更改生成的代码。

文件: hello_world_restricted.adb, Crate: pragmas_restrictions (查看, 纯文本, 使用 Alire 下载, Alire crate 信息)

代码:

pragma Restrictions (
   Simple_Barriers,
   No_Abort_Statements,
   No_Asynchronous_Control,
   No_Calendar,
   No_Delay,
   No_Dynamic_Attachment,
   No_Dynamic_Priorities,
   No_Enumeration_Maps,
   No_Entry_Calls_In_Elaboration_Code,
   No_Entry_Queue,
   No_Exception_Registration,
   No_Initialize_Scalars,
   No_Local_Protected_Objects,
   No_Protected_Type_Allocators,
   No_Protected_Types,
   No_Relative_Delay,
   No_Requeue_Statements,
   No_Select_Statements,
   No_Streams,
   No_Task_Allocators,
   No_Task_Attributes_Package,
   No_Task_Hierarchy,
   No_Task_Termination,
   No_Tasking,
   No_Terminate_Alternatives,
   No_Wide_Characters,
   Static_Priorities,
   Static_Storage_Size,
   Immediate_Reclamation,
   No_Implementation_Restrictions,
   Max_Protected_Entries => 0,
   Max_Protected_Entries => 0,
   Max_Select_Alternatives => 0,
   Max_Task_Entries => 0,
   Max_Tasks => 0,
   Max_Asynchronous_Select_Nesting => 0);

with Ada.Text_IO;

procedure Hello_World_Restricted is
begin
   Ada.Text_IO.Put_Line ("Hello World!");
   Ada.Text_IO.New_Line;
   Ada.Text_IO.Put_Line ("This is a program with restricted runtime.");
end Hello_World_Restricted;

输出:

>alr run hello_world_restricted
ⓘ Building pragmas_restrictions=1.0.1/pragmas_restrictions.gpr...          
Compile
   [Ada]          hello_world_restricted.adb
Bind
   [gprbind]      hello_world_restricted.bexch
   [Ada]          hello_world_restricted.ali
Link
   [link]         hello_world_restricted.adb
✓ Build finished successfully in 0.83 seconds.
Hello World!

This is a program with restricted runtime.

维基教科书

[编辑 | 编辑源代码]

Ada 参考手册

[编辑 | 编辑源代码]

Ada 质量和风格指南

[编辑 | 编辑源代码]
华夏公益教科书