我遇到了一个奇怪的错误。
我正在为引导加载程序编写代码,所以我没有很多花哨的库。
代码本身很简单,就是
int array[32] = { 1, 2, 3, [...snip...], 31, 32 };
此代码导致有关 memcpy 未链接的未解决的外部问题。但是这段代码编译和链接很好
int array[12] = { 1, 2, 3, [...snip...], 11, 12 };
事实上,错误发生在
int array[12] = { 0 };
和
int array[13] = { 0 };
第一个链接很好,但第二个无法链接。我只是不明白为什么在大小为 13 时,编译器突然决定依赖 memcpy 来解决这个问题。我尝试了-O0和-O3。我的编译器是一个名为 cl470 的 Windows 可执行文件,不确定它来自哪里。
另一个奇怪的事情是,当我把它放在一个函数中时,这是有问题的,但是如果我全局声明数组,那么就没有问题了。