虽然我可以找到有关生成Ada绑定到C库的大量信息,但我似乎无法找到相反的东西。具体来说,我有一些数学/科学包,我想导出到C,以使它们更广泛使用。通过编译指示/方面导出函数或过程很容易,但我对如何处理在Ada中声明的类型感到困惑。
比方说,我有一个实现与单位无关的平面角度的包。除了算术运算符外,还有处理不同单位的函数,如Degrees(«Value»)返回«Angle»作为构造函数,Gradians(«Angle»)返回«Value»作为访问器。这样,有一个共同的表示,精心挑选,以允许程序员与任何单位一起工作。
我感到困惑的是,当导出函数或过程时,C如何知道并理解它要传递的角度类型?
编辑: 好的,所以我添加了“with Export,Convention => C;”对于类型,何时不应该有“出口”。愚蠢的疏忽。
仍然密切相关,我现在不知道如何从C实际调用代码。如上所述,有大量关于从C导入内容的文档,但即使是LRM也没有提供有关将内容导出到C的示例。
我知道C通过预处理器包含库/文件,特别是“#include”指令。我不认为这会起作用,因为C编译器会尝试解析Ada规范。 C如何看到Ada的东西?