Ada83'地址表示属性

时间:2015-08-20 03:48:39

标签: ada

我有一个我正在更新的遗留应用程序。最终用途要求使用特定的编译器。从我所看到的,这个编译器没有识别这个代码,并产生一个错误:

   Procedure Copy_Buffer (Source_Address: Address;
                          Count         : Natural   ) 

      -- reserve a buffer Source_Array with  a number of words to fit 
      Source_Array : Word_Buffer_Type ( 1.. Count );
      -- and put it at the same address as the incoming buffer pointer refers to
      For Source_Array'Address Use Source_Address;

它在两行产生无效的语法错误

      Source_Array : Word_Buffer_Type ( 1.. Count );
      For Source_Array'Address Use Source_Address;

这里的目的是将源数据视为Word_Buffer_Type类型,而不管它对调用者的类型是什么。

当我使用具有Ada83兼容性的GNAT编译它时,这很好用。但是,目标编译器并不喜欢它。

我看到早期开发人员处理这个问题的方法是用汇编语言处理缓冲区。我真的不想这样做,而且我在问我是否还有其他方法(不经过太多的扭曲)来处理源数据。

0 个答案:

没有答案