在具有简单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数组?
答案 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);