Ada 编程/属性/'代码地址
外观
'Address
属性可以在 Ada 95 和 Ada 2005 中应用于子程序,但其预期效果似乎是提供一个地址值,该地址值可用于通过地址子句调用子程序,如以下示例所示
procedure K is ...
procedure L;
for L'Address use K'Address;
pragma Import (Ada, L);
然后,对 L
的调用将导致对 K
的调用。在 Ada 83 中,由于没有对子程序的访问值,因此这是一个获取间接调用的效果的常见解决方法。GNAT 实施了上述 Address
的使用,并且示例代码中说明的技术可以正常工作。
但是,出于某些目的,获取子程序生成的代码的起始地址非常有用。在某些体系结构中,这并不一定与上面描述的 Address
值相同。例如,Address
值可能引用子程序描述符而不是子程序本身。
'Code_Address
属性只能应用于子程序实体,它始终返回指定子程序生成的代码的起始地址,这可能与由相应的 'Address
属性返回的值相同,也可能不同。