コンパイラの警告 (レベル 1) C4733

インライン asm は 'FS:0' に割り当てています: ハンドラーは安全なハンドラーとして登録されていません

新しい例外ハンドラーを追加するために FS:0 の値を変更する関数は、ハンドラーが有効な例外ハンドラーとして登録されていない可能性があるため、安全な例外処理機能では機能しない場合があります (/SAFESEH を参照)。

この警告を解決するには、FS:0 定義を削除またはこの警告を無効化し、.SAFESEH を使用して安全な例外ハンドラーを指定します。

次の例では C4733 が生成されます。

// C4733.cpp
// compile with: /W1 /c
// processor: x86
#include "stdlib.h"
#include "stdio.h"
void my_handler()
{
   printf("Hello from my_handler\n");
   exit(1);
}

int main()
{
   _asm {
      push    my_handler
      mov     eax, DWORD PTR fs:0
      push    eax
      mov     DWORD PTR fs:0, esp   // C4733
   }

   *(int*)0 = 0;
}