gpt4 book ai didi

c++ - 在 Interfaces.C 中传递 boolean Ada 类型

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

我现在想了解如何通过 Interfaces.C 包在 Ada 中传递标准 boolean 类型以调用 DLL 函数。Interfaces.C 包不包含 Ada boolean 类型,因为 boolean 类型在 ANSI C 中不存在。我有一个用 C++ 编写的 DLL 函数,它的导出函数原型(prototype)有一个 Bool 类型的参数。这是如何在 Intefaces.C 包中传递以调用 DLL 导出函数的?

最佳答案

传统上,在 C 中, boolean 值用 int 类型表示。在 C++ 中,定义了一个 bool 类型,但请注意小写的“b”。如果您的参数是 Bool 类型(请注意大写的“B”),那么您应该在某处(在您的 C++ 库中)有一个类声明,它将告诉您有关该类型实现的更多信息。通常,这样的 Bool 类通过语言的某些工件与标准 bool 类型兼容:Bool 类不定义虚函数,并将其值保留在一个成员中,该成员明智地放在类定义的第一位。

我没有测试它,但我会说你可以使用 int 类型。进行测试以确保它被 C++ 函数接受。要将 boolean 值转换为 int,您可以使用类似 Interfaces.C.int(Boolean'Pos(your_bool_value)) 的方法。

另请注意,如 Ada 引用手册 [B.3.62] 中所述:一个实现可能会在 C 接口(interface)包中提供额外的声明。因此请检查您对 Interfaces.C 的实现,它可能包含 bool 类型的定义。

关于c++ - 在 Interfaces.C 中传递 boolean Ada 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1748630/

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