我需要将 int 值转换为 LPBYTE。当我查看定义时,显示如下。我不确定 far
是什么意思。
typedef unsigned char BYTE;
typedef BYTE far *LPBYTE;
- “远”是什么意思
- 如何将 int 值转换为 LPBYTE
编辑
foo(LPBYTE x){
}
int main()
{
int y = koo();
foo(y); // how to cast here
return 0;
}
实际代码
int iVal = 0;
LONG res = RegQueryValueEx(hKey, L"UseSystemSeparators", NULL, &lpType, (LPBYTE)iVal, &size);
最佳答案
如果我没理解错的话,你需要变量的地址,然后将该地址转换为LPBYTE
.
然后你需要使用寻址运算符&
在变量上获取指向变量的指针,并转换该指针:
foo(reinterpret_cast<LPBYTE>(&y));
如果变量实际上包含一个地址,那么您首先必须非常小心,因为不能保证 int
可以保存内存地址(即指针)。以 64 位系统为例,其中指针是 64 位,但是 int
通常仍然是 32 位类型。
改用 intptr_t
保证足够大以容纳 int
或指针。
然后你应该做例如
intptr_t y = ...;
foo(reinterpret_cast<LPBYTE>(y));
罢工><罢工>罢工>
关于c++ - 如何将 int 转换为 LPBYTE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29093433/