Moh*_*lam 2 linux gcc pointers 32bit-64bit gcc4
我想在gcc中定义一个大尺寸指针(64位或128位),这不依赖于平台.我认为在MSDN中有类似__ptr128或__ptr64的东西.
sizeof(__ptr128) is 16 bytes.
sizeof(__ptr64 ) is 8 bytes.
Run Code Online (Sandbox Code Playgroud)
可能吗?
当你在64位操作系统中使用内核函数时需要8字节指针参数,并且你有一个32位应用程序使用32位地址并且你想使用这个内核函数.
你的问题毫无意义.根据定义,指针是一个内存地址 - 大小必须取决于平台.如何在支持64位寻址的硬件平台上取消引用128位指针?!
您可以创建64位或128位值,但指针与底层硬件的内存寻址方案直接相关.
编辑
随着你的附加声明,我想我看到你正在尝试做什么.不幸的是,我怀疑这是可能的.如果要使用的内核函数采用64位指针参数,则很可能是64位函数(除非您正在开发一些不寻常的硬件).
即使技术上可以将64位指令混合到32位可执行文件中,但实际上没有编译器可以让你这样做.64位API调用将使用64位代码,64位寄存器和64位堆栈 - 编译器和操作系统管理从32位环境到64位的任意切换将非常尴尬环境.
您应该查看为32位环境找到等效的API.也许您可以发布您想要使用的内核函数原型(名称+参数),有人可以帮助您找到更好的解决方案.
只是这样没有混淆,__ptr64在MSDN中不是平台独立的:
在32位系统上,使用__ptr64声明的指针被截断为32位指针.
| 归档时间: |
|
| 查看次数: |
1590 次 |
| 最近记录: |