Ich habe eine Anforderung, wo ich eine Zeichenfolge von einer C-Funktion an eine Ada-Funktion übergeben muss (eine C-Ada-Bindungsanwendung).Die besten Möglichkeiten, Strings von C nach Ada zu übergeben
C Funktion:
extern void ada_func_print_string(char*);
void Pass_String()
{
char str[] = "Hello_Ada";
ada_func_print_string(str);
}
Ada-Funktion:
Spec:
pragma Export (Convention => C,
Entity => Ada_Print_String,
External_Name => "ada_func_print_string");
Körper:
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;
Der obige Code ziemlich funktioniert ohne jede Hektik. Die Frage, die ich habe, ist, ob die Deklaration der formalen Parameter C_Source ist gut, um ein Interfaces.C.char_array oder es sollte besser Interfaces.C.Strings.chars_ptr? Was ist der Unterschied zwischen den beiden in Bezug auf diese Anwendung? Gibt es einen Todesfall unter diesen beiden Arten hier?
Großartig, es hat wirklich geholfen !! –