Ada的字符串不会像C一样终止。我在C-Ada绑定应用程序中有一个要求,我需要将在Ada代码中分配的字符串传递给C函数。如何在C中识别Ada字符串,因为C中的字符串通常是由null char终止的简单char数组,而在Ada中不是这样的情况?
任何例子都将不胜感激!
答案 0 :(得分:1)
在此主题上将@ manuBriot的answer扩展到您之前的question,请注意,方便的包装器procedure Foo
会在传入的Ada String
上调用New_String
获得chars_ptr
。
procedure Foo (C : String) is
S : Interfaces.C.Strings.chars_ptr := New_String (C);
begin
…
end Foo;
另请注意,New_String
“相当于New_Char_Array(To_C(Str))
。”默认情况下,当Ada String
,To_C
将Append_Nul
设置为True
时。因此,Ada Foo
使用正确foo
终止的C字符串调用C null
。