我有一个我正在更新的遗留应用程序。最终用途要求使用特定的编译器。从我所看到的,这个编译器没有识别这个代码,并产生一个错误:
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编译它时,这很好用。但是,目标编译器并不喜欢它。
我看到早期开发人员处理这个问题的方法是用汇编语言处理缓冲区。我真的不想这样做,而且我在问我是否还有其他方法(不经过太多的扭曲)来处理源数据。