Ada 编程/属性
外观
< Ada 编程
当声明变量或子程序等实体时,其某些属性通常由编译器指定(例如变量的大小或地址、子程序的调用约定)。可以查询的属性称为 *属性*;可以指定的属性称为 方面。方面和属性在 Ada 参考手册的附件中定义 附件 K:语言定义的方面和属性 [带注释的].
*属性* 的概念对于 Ada 来说非常独特。属性允许您获取 - 并且有时设置 - 关于对象或其他语言实体(如类型)的信息。一个很好的例子是 Size 属性。它描述了对象或类型的大小(以位为单位)。
A : Natural := Integer'Size; -- A is now 32 (with the GNAT compiler for the x86 architecture)
但是,与来自 C/C++ 的 sizeof
运算符不同,Size 属性也可以设置。
type
Byteis
range
-128 .. 127; -- The range fits into 8 bits but the -- compiler is still free to choose.for
Byte'Sizeuse
8; -- Now we force the compiler to use 8 bits.
当然,并非所有属性都可以设置。属性以一个 '(撇号)开头,后跟属性名称。编译器通过上下文确定撇号是属性的开始,还是字符文字或量化表达式的开始。
A : Character := Character'Val (32); -- A is now a space B : Character := ' '; -- B is also a space S : String := Character'(')')'Image; -- an especially nice parsing exercise
- Ada 2022
- 这是一个新的 Ada 2022 属性。
- 过时
- 这是一个已弃用的属性,不应在新的代码中使用。
- 'Definite
- 'Delta
- 'Denorm
- 'Digits
- 'Emax (过时)
- 'Enum_Rep (Ada 2022)
- 'Enum_Val (Ada 2022)
- 'Exponent
- 'External_Tag
- 'Epsilon (过时)
- 'First
- 'First_Bit
- 'Floor
- 'Fore
- 'Fraction
- 'Has_Same_Storage (Ada 2012)
- 'Identity
- 'Image (Ada 2022 中已更改)
- 'Index (Ada 2022)
- 'Input
- 'Large (过时)
- 'Last
- 'Last_Bit
- 'Leading_Part
- 'Length
- 'Machine
- 'Machine_Emax
- 'Machine_Emin
- 'Machine_Mantissa
- 'Machine_Overflows
- 'Machine_Radix
- 'Machine_Rounding (Ada 2005)
- 'Machine_Rounds
- 'Mantissa (过时)
- 'Max
- 'Max_Alignment_For_Allocation (Ada 2012)
- 'Max_Size_In_Storage_Elements
- 'Min
- 'Mod (Ada 2005)
- 'Model
- 'Model_Emin
- 'Model_Epsilon
- 'Model_Mantissa
- 'Model_Small
- 'Modulus
- 'Object_Size (Ada 2022)
- 'Old (Ada 2012)
- 'Output
- 'Overlaps_Storage (Ada 2012)
- 'Parallel_Reduce (Ada 2022)
- 'Partition_ID
- 'Pos
- 'Position
- 'Pred
- 'Preelaborate_Initialization (Ada 2022)
- 'Priority (Ada 2005)
- 'Put_Image (Ada 2022)
- 'Range
- 'Read
- 'Reduce (Ada 2022)
- 'Relative Deadline (Ada 2022)
- 'Remainder
- 'Result (Ada 2012)
- 'Round
- 'Rounding
- 'Safe_Emax (过时)
- 'Safe_First
- 'Safe_Large (过时)
- 'Safe_Last
- 'Safe_Small (过时)
- 'Scale
- 'Scaling
- 'Signed_Zeros
- 'Size
- 'Small
- 'Storage_Pool
- 'Storage_Size
- 'Stream_Size (Ada 2005)
- 'Succ
- '宽图像 (Ada 2022 中更改)
- '宽值
- '宽宽图像 (Ada 2005,在 Ada 2022 中更改)
- '宽宽值 (Ada 2005)
- '宽宽宽度 (Ada 2005)
- '宽宽度
- '宽度
- '写入
以下属性并非所有 Ada 编译器都提供,仅在实现过这些属性的编译器中提供。
目前,只列出了几个编译器的实现定义属性。您可以帮助 Wikibooks 添加 其他编译器的特定属性。
- GNAT
- 实现定义属性 来自 AdaCore/FSF 的 GNAT 编译器。
- HP Ada
- HP Ada 编译器(以前称为“DEC Ada”)的实现定义属性。
- ICC
- Irvine ICC 编译器的实现定义属性[1]。
- PowerAda
- 实现定义属性 来自 OC Systems 的 PowerAda。
- SPARCompiler
- 实现定义属性 来自 Sun 的 SPARCompiler Ada。
- '中止信号 (GNAT)
- '地址大小 (GNAT)
- '体系结构 (ICC)
- '汇编输入 (GNAT)
- '汇编输出 (GNAT)
- 'AST 条目 (GNAT,HP Ada)
- '原子始终无锁 (GNAT)
- '位 (GNAT,HP Ada)
- '位位置 (GNAT)
- 'CG 模式 (ICC)
- '代码地址 (GNAT)
- '编译器密钥 (SPARCompiler)
- '编译器版本 (GNAT,SPARCompiler)
- '受限的 (GNAT)
- '已声明的 (ICC)
- '默认位顺序 (GNAT)
- '默认标量存储顺序 (GNAT)
- '解除引用 (GNAT)
- '描述符大小 (GNAT)
- 'Dope 地址 (SPARCompiler)
- 'Dope 大小 (SPARCompiler)
- '已详细说明的 (GNAT)
- '详细说明主体 (GNAT)
- '详细说明规范 (GNAT)
- '详细说明子程序主体 (GNAT)
- 'Emax (GNAT)
- '已启用 (GNAT)
- '条目编号 (SPARCompiler)
- '枚举表示 (GNAT)
- '枚举值 (GNAT)
- 'Epsilon (GNAT)
- '异常地址 (ICC)
- '扩展后缀 (PowerAda)
- '扩展基数 (PowerAda)
- '扩展位数 (PowerAda)
- '扩展前缀 (PowerAda)
- '扩展图像 (PowerAda)
- '扩展值 (PowerAda)
- '扩展宽度 (PowerAda)
- '扩展宽图像 (PowerAda)
- '扩展宽值 (PowerAda)
- '扩展宽宽度 (PowerAda)
- '快速数学 (GNAT)
- '终结大小 (GNAT)
- '固定值 (GNAT)
- '从任意类型转换 (GNAT)
- '有访问值 (GNAT)
- '有辨别式 (GNAT)
- '有标记值 (GNAT)
- '高位字 (ICC)
- '同构的 (SPARCompiler)
- 'Img (GNAT)
- '已初始化的 (GNAT)
- '整数值 (GNAT)
- '无效值 (GNAT)
- '线性地址 (ICC)
- '大尺寸的 (GNAT)
- '库级别 (GNAT)
- '低位字 (ICC)
- '循环条目 (GNAT)
- '机器大小 (GNAT,HP Ada)
- '尾数 (GNAT)
- '最大整型大小 (GNAT)
- 'Max_Interrupt_Priority (GNAT)
- 'Max_Priority (GNAT)
- 'Maximum_Alignment (GNAT)
- 'Mechanism_Code (GNAT)
- 'Null_Parameter (GNAT, HP Ada)
O – T
[edit | edit source]- 'Object_Size (GNAT)
- 'Old (GNAT)
- 'Passed_By_Reference (GNAT)
- 'Pool_Address (GNAT)
- 'Range_Length (GNAT)
- 'Ref (SPARCompiler)
- 'Restriction_Set (GNAT)
- 'Result (GNAT)
- 'Round (GNAT)
- 'Safe_Emax (GNAT)
- 'Safe_Large (GNAT)
- 'Safe_Small (GNAT)
- 'Scalar_Storage_Order (GNAT)
- 'Simple_Storage_Pool (GNAT)
- 'Small (GNAT)
- 'Small_Denominator (GNAT)
- 'Small_Numerator (GNAT)
- 'Storage_Unit (GNAT)
- 'Stub_Type (GNAT)
- 'System_Allocator_Alignment (GNAT)
- 'Target (ICC)
- 'Target_Name (GNAT)
- 'Task_ID (SPARCompiler)
- 'Tick (GNAT)
- 'To_Address (GNAT)
- 'To_Any (GNAT)
- 'Type_Class (GNAT, HP Ada)
- 'TypeCode (GNAT)
- 'Type_Key (SPARCompiler)
U – Z
[edit | edit source]- 'UET_Address (GNAT)
- 'Unconstrained_Array (GNAT)
- 'Universal_Literal_String (GNAT)
- 'Unrestricted_Access (GNAT, ICC)
- 'Update (GNAT)
- 'VADS_Size (GNAT)
- 'Valid_Value (GNAT)
- 'Valid_Scalars (GNAT)
- 'Value_Size (GNAT)
- 'Wchar_T_Size (GNAT)
- 'Word_Size (GNAT)