我有一个需求,即需要将字符串从C函数传递到Ada函数(C-Ada绑定应用程序)。将字符串从C传递给Ada的最佳方式
C函数:
extern void ada_func_print_string(char*);
void Pass_String()
{
char str[] = "Hello_Ada";
ada_func_print_string(str);
}
阿达功能:
规格:
pragma Export (Convention => C,
Entity => Ada_Print_String,
External_Name => "ada_func_print_string");
身体:
procedure Ada_Print_String (C_Source : Interfaces.C.char_array)
Ada_Str : String := Interfaces.C.To_Ada(Item => C_Source,
Trim_Nul => True);
begin
Ada.Text_IO.Put_Line(Ada_Str);
end Ada_Print_String;
上面的代码几乎工作正常,没有任何麻烦。我的问题是形式参数C_Source的声明是否是好得Interfaces.C.char_array,或者最好是Interfaces.C.Strings.chars_ptr?两者在这个应用方面有什么区别?在这里使用这两种类型有没有死亡?
太棒了,它真的帮助! –