gpt4 book ai didi

c++ - 为什么 MAKEINTRESOURCE() 有效?

转载 作者:IT老高 更新时间:2023-10-28 22:08:13 26 4
gpt4 key购买 nike

宏定义为:

#define MAKEINTRESOURCEA(i) ((LPSTR)((ULONG_PTR)((WORD)(i))))
#define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i))))

为什么这可以用来指示资源 ID(16 位无符号整数)或资源名称(指向 char 数组的指针)?这不会有效地将地址空间(在 32 位系统上)限制为 16 位吗?否则系统怎么知道我用的是ID还是名字?

最佳答案

这是因为 Windows 不允许为地址空间的前 64 KB 映射页面。捕获空指针引用。但我也想在从 16 位版本的 Windows 转换的程序中捕获指针错误。

一个副作用是,这允许可靠地区分打包到指针值中的资源 ID,因为它们总是指向不可映射的内存。

关于c++ - 为什么 MAKEINTRESOURCE() 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3610565/

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