char_array Ada 中的赋值

char_array assignment in Ada

在具有简单字符数组(Interfaces.C.char 数组)声明的 Ada 程序中,

package C renames Interfaces.C;
Msg : C.Char_Array(1..50) := (others => C.To_C(Item=>ASCII.NUL));

在以下分配中出现运行时异常 "length check failed"

Msg := C.To_C(Item => "UNKNOWN ERROR",Append_Nul => True));

上述引发异常的作业有什么问题?是否有任何简单的单行方法可以像上面那样直接向 char 数组写入较小的赋值?

查看ARM。附件B.3.

除了函数 To_C 还有一个过程 To_C.

首先声明一个size_t变量来保存返回值:

   Count : Size_T;

然后:

   C.To_C(Item => "UNKNOWN ERROR",
          Target => Msg,
          Count => Count,
          Append_Nul => True);