一般情况下,我们很少在case标签下使用{},但是当你遇到这个问题的时候就应该考虑使用{},因为这个问题是因为你在case标签里面定义了变量,并且初始化了它,所以会出现这个default标签跳过的问题,你只需要将你定义初始化变量的case标签中的所有内容使用{}括起来就可以解决这个问题了。
下面这个问题是在写一个调试器时遇到的,我想将加载的DLL文件名称打印出来,在LOAD_DLL_DEBUG_INFO这个结构体中,没有哪个成员变量是可以直接使用打印DLL名称的,所以我们需要通过LOAD_DLL_DEBUG_INFO中的hFile句柄来间接的获取DLL名称,参考博客我在最后会贴出,博主是参考了MSDN,我也打开了MSDN搜索出了那个方法,只是稍微修改了下返回值,这样我就可以直接得到DLL名称并打印了。方法名称是GetFileNameFromHandle,在MSDN中搜索这个函数可以看到原型,原型函数返回值是BOOL类型。我修改后的函数如下:
//通过文件句柄获取文件名
TCHAR* GetFileNameFromHandle(HANDLE hFile)
{
BOOL bSuccess = FALSE;
TCHAR pszFilename[MAX_PATH + 1];
HANDLE hFileMap;
// Get the file size.
DWORD dwFileSizeHi = 0;
DWO