分享方式:


編譯器警告 (層級 1) C4733

指派給 'FS:0' 的內嵌 asm: 處理常式未註冊為安全處理常式

修改 FS:0 值以新增例外狀況處理常式的函式可能無法與保管庫例外狀況搭配使用,因為處理常式可能未註冊為有效的例外狀況處理常式(請參閱 /SHUTDOWNEH )。

若要解決此警告,請移除 FS:0 定義,或關閉此警告並使用 要指定安全例外狀況處理常式的EH。

下列範例會產生 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;
}