Windows结构化异常处理:简单的测试程序无法编译

时间:2010-06-10 15:38:57

标签: winapi seh

#include <windows.h>

int main()
{

    int* i = (int*)malloc(sizeof(int));
    *i = 5;

    __try
    {
        free(i);
        free(i);
    }
    __except
    {
        return -1;
    }


return 0;
}

我想了解更多有关Windows SEH的信息。我的第一个测试程序给了我一些真正的麻烦。我查看了msdn文档,但我仍然不确定我的错误。当我尝试编译这个程序时,我收到以下错误:

error C2059: syntax error : '{'
error C2143: syntax error : missing ';' before '{'

都在第15行。

感谢。

1 个答案:

答案 0 :(得分:4)

问题是__except子句需要有一个表达式。有关完整示例,请参阅以下MSDN页面

http://msdn.microsoft.com/en-us/library/aa273608(VS.60).aspx

将始终执行处理程序的快速示例

__try {
  // stuff
} __except (EXCEPTION_EXECUTE_HANDLER) {
  // handler
}