#pragma leaves

説明

#pragma leaves は関数名を取り、呼び出し後に関数がディレクティブに戻らないことを指定します。

構文

構文図を読む構文図をスキップする                         .-,--------.
                         V          |
>>-#--pragma--leaves--(----function-+--)-----------------------><
 

このプラグマは、function が呼び出し元に戻らないようにコンパイラーに命令します。

このプラグマの利点は、これを使用するとコンパイラーは function の後にあるコードをすべて無視することができるので、 最適化プログラムはより効率的なコードを生成することができるという点です。一般的に、 このプラグマはカスタムのエラー処理関数に使用されますが、 この場合特定のエラーが発生すると、プログラムを終了することができます。 これと同様に振る舞う関数としては、exitlongjmp、および terminate があります。

#pragma leaves(handle_error_and_quit)
void test_value(int value)
{
 if (value == ERROR_VALUE)
 {
  handle_error_and_quit(value);
  TryAgain(); // optimizer ignores this because
    // never returns to execute it
 }
}