【发布时间】:2015-08-15 17:58:11
【问题描述】:
在D语言中,下列语句的等价物是什么 假设代码:-
int size = 8;
int shift = 1;
int[size] skip;
int[size] suff;
memcpy(&skip[0], &skip[0]+shift, (m-shift)*(int.sizeof));
memset(&skip[0]+(m-shift),0, shift*(int.sizeof))
我在想转换是:-
skip[0 .. size-1] = skip[shift .. size-1 ]; //For the memcpy();
skip[0 .. size-1] = 0; //For the memset();
但这似乎对我不起作用,因为 dmd(v2.066.1) 给出了错误 slice [8..7] exceeds array bounds [0..8] 。
【问题讨论】:
-
[0..8] 表示 [0, 1, 2, 3, 4, 5, 6, 7]。所以,你需要
size,你写size-1。
标签: d memcpy memset compiled-language ctfe