我最近在我的一个类中添加了一个静态查找数组,如:
// MyClass.h
class MyClass
{
static MyClass const s_fromIndex[1500];
public:
MyClass(size_t arg1, size_t arg2);
static MyClass fromIndex(size_t index) { return s_fromIndex[index]; }
}
// MyClass.cpp
MyClass const MyClass::s_fromIndex[1500] =
{
MyClass(0, 1), MyClass(0, 2), MyClass(0, 3), MyClass(0, 4),
...
};
数组的原因是从索引到两个参数的计算非常昂贵(尽管在示例代码中看起来是这样)。由于索引限制为1500,所以我想改为从查找数组返回对象。
类驻留在静态库项目中。在生成可执行代码的过程中,我突然注意到“在我的第二个项目中,我很快就注意到了”。以前这一步几乎可以立即完成。调试生成仍然很快完成。
你知道为什么静态数组会在发布版本中导致一个非常长的“生成代码”步骤吗?编译器/链接器在这一步做什么?