ada中的char_array任务

时间:2016-03-27 18:02:44

标签: ada

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

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

在以下任务中遇到运行时异常"长度检查失败"

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

引起异常的上述作业有什么问题?是否有任何简单的单行方式,我可以像上面那样直接写出较小的赋值给char数组?

1 个答案:

答案 0 :(得分:5)

见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);