在Visual Studio中,如何防止编译器优化我有用的功能?

时间:2018-06-21 05:59:01

标签: compiler-optimization

我做了一个模板字符串操作类,它可以操作std :: string和MFC CString。 在Debug版本上可以正常工作。 它确实适用于发行版。 通过调查,我发现至少一个有用的功能得到了优化。 checkChars已优化,应该在拆分中调用。 (没有调用checkChars。)

static bool checkChars(const TCHARTYPE& c, const TCHARTYPE* chrs)
        {
            for ( ;*chrs ;chrs++)
            {
                if (c == *chrs)
                {
                    return true;
                }
            }
            return false;
        }
void split(const TSTRING& s, vector<TSTRING>& v, const TCHARTYPE* separator, bool bKeepEmptyParts = false)
{
...
//here at() is called, but checkChars isn't
if (checkChars(at(s, i), separator))
...
}

VS优化是

  

最大速度(/ O2)

。我发现使用

  

自定义

可以阻止优化我有用的功能。 但是我想知道为什么,而且我不想更改项目设置,我可以修改我的代码以使其工作吗?

1 个答案:

答案 0 :(得分:1)