小编doo*_*der的帖子

将 C 风格的整数数组传递给 Ada 函数以检索数组中的第一个元素

我正在尝试将 google test 链接到 ada95 进行单元测试。我知道 ada 有 aunit 和 ahven,但这只是为了看看这是否可能并且超出了我的问题范围。我已经成功地能够使用基本数据类型执行简单的函数和过程。我想尝试做的下一件事类似于以下内容:

这是 main.cpp 文件:

#include <stdio.h>
#include <gtest/gtest.h>

extern "C" {
  int firstElement(int buffer[]);
}

TEST(tryTest, checkBuffer){
   int buffer[10] = {10,1,6,4,3,2,1,3,4,6};
   ASSERT_EQ(buffer[0],firstElement(buffer));
}

int main(int argc, char ** argv) {
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)

为简单起见,我将只放置广告文件:

Lib_test.ads

with Interfaces.C;
with Interfaces.C.Pointers;
package Lib_Test is

  function FirstElement(a: Interfaces.C.Pointers) return Interfaces.C.Int;
  pragma Export(C,FirstElement,"firstElement");
end Lib_Test;
Run Code Online (Sandbox Code Playgroud)

我知道在 c 中,您传递的是指向第一个元素的指针,而不是函数的整个数组。这就是为什么我尝试使用 Interfaces.C.Pointers 作为数据类型,但出现以下错误

subtype mark required in this context
found "Pointers" declared at i-cpoint.ads:44
Run Code Online (Sandbox Code Playgroud)

除了 …

c ada googletest

5
推荐指数
1
解决办法
132
查看次数

标签 统计

ada ×1

c ×1

googletest ×1