同一のコードを生成するようにコンパイラを設定するにはどうすればよいですか?例:_
inline bool iszero(int a)
{
return (a == 0);
}
int main()
{
int a = 4;
if(a == 0) // First
a = 5;
if(iszero(a)) // Second
a = 5;
///...
}
デバッグモード(インライン化あり)では、逆アセンブルされたコードは次のようになります。
if(a == 0) // First
a = 5;
bool temp; // Second
if(a == 0)
temp = 0;
else
temp = 1;
if(temp == 0)
a = 5;
なぜそれが起こるのですか?
なぜこの質問がされたのですか?インライン関数を使用してアプリケーションをデバッグする必要があり(デバッグを高速化するため) 、デバッグモードでパフォーマンスを低下させたくありません。