例外ハンドラは、Releaseビルド時実行されないのでしょうか?
以下のコードは、Debugビルド時音がでます。しかし、Releaseにすると、何もでません。
__try {
DWORD dwDivideByZero = 0;
DWORD error = 5 / dwDivideByZero;
}
__except( EXCEPTION_EXECUTE_HANDLER ) {
::MessageBeep(0);
Release では最適化によって、意味のない error あたりの演算が削除されているのでは? 一度、ブレークをかけるか、ステップ実行をした上で、デバッグ - ウィンドウ - 逆アセンブルで表示してみてください。
たとえば、error の値をコンソールに出力するなどして ”使われていること” を明示するか、DWORD error の前に最適化を抑制する volatile キーワードをつければ、ビープ音が鳴るでしょう。
ありがとうございます。
Azuleanさんがおっしゃるとおり、使われていることを明示すると音がなりました。
このへんは、逆アセンブル作業も必要になってくるのですね。勉強になります。ありがとうございました。