我正在尝试将无符号整数数组从 C++ 传递到 Ada。 Ada Lovelace 教程指出,Ada 数组对应于 C++ 中指向数组第一个元素的指针。
这就是我正在尝试做的事情。
C++
unsigned int buffer[bufferSize];
...
unsigned int* getBuffer() {
return buffer;
}
Ada
pragma Import (C, C_Get_Buffer, "getBuffer");
...
function C_Get_Buffer returns System.Address;
...
Buffer : array (1 .. Buffer_Size) of Interfaces.C.Unsigned;
...
Buffer'Address := C_Get_Buffer;
但是我发现无法分配 Buffer'Address。将数组从 C 传递到 Ada 的正确方法是什么?
Thanks!
这将按照你的要求进行(我没有打扰Buffer_Size
):
function C_Get_Buffer return System.Address;
pragma Import (C, C_Get_Buffer, "getBuffer");
Buffer_Address : constant System.Address := C_Get_Buffer;
Buffer : array (1 .. 10) of Interfaces.C.unsigned;
for Buffer'Address use Buffer_Address;
然而,这可能是实现相同目标的更短的方法:
Buffer : array (1 .. 10) of Interfaces.C.unsigned;
pragma Import (C, Buffer, "buffer");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)