所以我正在尝试优化一些代码。我有一个带有可变大小循环的函数。但是,为了提高效率,我想用 1、2 和 3 大小的循环制作完全展开的特殊情况。到目前为止,我的方法是将循环大小声明为 const 参数,然后定义调用 main 函数的包装函数,并将其传递给 const 值的文字。我已经包含了一个代码片段,它说明了我想到的那种事情。
inline void someFunction (const int a)
{
for (int i=0; i<a; i++)
{
// do something with i.
}
}
void specialCase()
{
someFunction (3);
}
void generalCase(int a)
{
someFunction (a);
}
所以我的问题是我期望我的编译器(GCC)在 specialCase 中展开 for 循环是否合理。我的意思是显然我可以复制 - 将 someFunction 的内容粘贴到 specialCase 中并用 3 替换 a 但为了清楚起见,我宁愿只在我的代码中处理 someFunction 的一个定义。