ula*_*ade 1 c++ visual-c++ visual-studio-2013
当我使用__assume(SomeFunc());它时,它编译得很好,即使__assume它应该是编译时提示并且SomeFunc()无法在编译时预测其返回值。
有人能解释一下这里发生了什么吗?
SomeFunc()无法在编译时预测其返回值。
编译器可能无法在编译时计算返回值,但这并不重要。
当您使用 时__assume(expression),您(程序员)告诉编译器“该表达式的计算结果始终为true”。您向编译器提供了额外的信息,否则它可能无法从源代码中推断出这些信息。
如果表达式true在运行时计算时恰好没有计算结果,则行为未定义。__assume您有责任仅在保证表达式出现的地方使用true。