我有以下代码:
import std.stdio;
int main(string[] args)
{
int[3] my_array = [1, 2];
return 0;
}
这编译得很好,然后在执行时中止,给出这个错误:
arrays_init
object.Exception@src/rt/arraycat.d(31): lengths don't match for array copy
----------------
arrays_init(_Dmain+0x64) [0x416bbc]
arrays_init(extern (C) int rt.dmain2.main(int, char**).void runMain()+0x1c) [0x418c5c]
arrays_init(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x2a) [0x4185d6]
arrays_init(extern (C) int rt.dmain2.main(int, char**).void runAll()+0x3b) [0x418ca3]
arrays_init(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x2a) [0x4185d6]
arrays_init(main+0xd1) [0x418561]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f60bc41d30d]
如果数组文字有 3 个项目,这运行良好,因此显然数组文字必须匹配静态数组的大小。但这不应该给出编译错误,因为两者的大小都可以在编译时计算吗?