gpt4 book ai didi

c++ - 将 C++ 数组传递给 Ada95

转载 作者:太空狗 更新时间:2023-10-29 21:06:02 25 4
gpt4 key购买 nike

我正在尝试将一个无符号整数数组从 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");

关于c++ - 将 C++ 数组传递给 Ada95,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8436417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com