ant*_*009 5 c portability size-t 32bit-64bit
GCC 4.4.1,C99
我正在使用size_t,而且size_t是一个unsigned int.但是,这取决于您是运行32位还是64位.
我将size_t用于存储缓冲区的大小.
因此,如果跨架构使用,我认为这不会是非常便携的.
只是一个问题,使用size_t32位或64位.什么情况会导致最严重的问题?
size_t保证能够保存实现中任何对象的字节数.这就是返回类型的sizeof原因size_t.
所以是的,它是可移植的.
正如其他人所说,以字节size_t为单位存储sizeof()任何可表示对象的结果或大小是正确且完全可以接受的。您需要注意以下几点:
size_t与某些无符号整数类型的大小相同。它不一定是相同的字节数作为最大的无符号整数类型,unsigned int,unsigned long等。sizeof(size_t)是实现定义的字节数,因此对其进行memcpy除名或将其分配给任何整数类型(不是uintmax_t一个好主意)。我什至不确定是否可以确定它的大小相等或小于uintmax_t。size_t值写入二进制文件,然后再size_t由其他进程,在另一台计算机上或通过使用不同编译器选项进行编译的某些东西将其读回,可能会对您的健康造成危害。size_t通过网络发送值并尝试使用sizeof(size_t)另一端的缓冲区来接收它是相当不安全的。所有这些都是除以外的任何其他整数类型的标准问题unsigned char。因此size_t与任何其他整数类型一样可移植。
| 归档时间: |
|
| 查看次数: |
4419 次 |
| 最近记录: |