gpt4 book ai didi

c++ - 我可以得到一个 "__try"-clause 来编译/EHsc 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:53 27 4
gpt4 key购买 nike

Microsoft 批准的设置线程名称的方法无法在启用/EHsc 的情况下进行编译。编译器告诉我

C2712:不能在需要对象展开的函数中使用 __try

http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx

//
// Usage: SetThreadName (-1, "MainThread");
//
typedef struct tagTHREADNAME_INFO
{
DWORD dwType; // must be 0x1000
LPCSTR szName; // pointer to name (in user addr space)
DWORD dwThreadID; // thread ID (-1=caller thread)
DWORD dwFlags; // reserved for future use, must be zero
} THREADNAME_INFO;

void SetThreadName( DWORD dwThreadID, LPCSTR szThreadName)
{
THREADNAME_INFO info;
info.dwType = 0x1000;
info.szName = szThreadName;
info.dwThreadID = dwThreadID;
info.dwFlags = 0;

__try
{
RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info );
}
__except(EXCEPTION_CONTINUE_EXECUTION)
{
}
}

知道如何在不更改编译器设置的情况下解决这个问题吗?

在 WinXP 上使用 Visual Studio 2008

最佳答案

通常的解决办法是把它分成两个函数,一个调用另一个。一个设置 SEH __try/__except block ,另一个包含与 C++ 异常和局部变量的析构函数调用相关的所有内容。

但我没有看到任何需要调用析构函数的类型。

也许这只是一个拼写错误 (except) vs (__except)?

关于c++ - 我可以得到一个 "__try"-clause 来编译/EHsc 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144329/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com