繁体   English   中英

将C ++数组传递给Ada95

[英]Passing a C++ array to Ada95

我正在尝试将一系列无符号整数从C ++传递给Ada。 Ada Lovelace教程指出,Ada数组对应于指向C ++中数组的第一个元素的指针。

这就是我想要做的。

C ++

unsigned int buffer[bufferSize];

...

unsigned int* getBuffer() {
    return buffer;
}

阿达

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的正确方法是什么?

谢谢!

这将按你的要求做(我没有打扰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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM