Dan*_*iel 2 c# c++ interop sizeof long-integer
在我的系统上:c ++中的sizeof(long)是4#又称32位sizeof(long)在c#中是8位64位
所以在我的Interop方法声明中,我一直用c#int代替c ++ longs但是我觉得这不安全吗?
为什么长度与c ++中的int相同?长期是64位?什么是下一个很长很长的??
最好的办法假设你有一个最近的C库是include <stdint.h>和使用uint64_t,int64_t,uint32_t,int32_t.无论底层平台的型号如何,这都将有效.
但如果你很好奇,潜在的问题是不同的系统使用不同的模型.在32位系统上,Posix和Windows都使用ILP32,这意味着整数,long和point都是32位长.
对于64位,Posix和Windows使用不同的模型.
Posix通常使用LP64,这意味着32位整数,64位长和64位指针.
Windows使用LLP64,这意味着32位整数和长整数,64位长整数和64位指针.
| 归档时间: |
|
| 查看次数: |
2854 次 |
| 最近记录: |