我对编译器的专业知识很少(没有读过),并且想知道以下代码片段是否会由相对较新的(VS2008+/GCC 4.3+)编译器自动优化:
Object objectPtr = getPtrSomehow();
if (objectPtr->getValue() == something1) // call 1
dosomething1;
else if (objectPtr->getValue() == something2) // call N (there are a few more)
dosomething2;
return;
其中 getValue() 仅返回一个成员变量,该成员变量是枚举之一。(该调用没有可观察到的效果)
我的编码风格是在“开关”之前进行一次调用并保存值以将其与每个 somethingX 进行比较,但我想知道这对于今天的编译器是否有争议。
我也不确定自己用谷歌搜索什么来找到答案。
谢谢,
AK