“size_t”是否代表编译代码的机器的字长?我使用g++解析时,编译器将“size_t”视为“long unsigned int”。是编译器内部选择了“size_t”的大小,还是“size_t”在调用编译器之前已经在“stddef.h”中进行了预处理宏定义为字长?或者我的理解完全偏离了轨道?
我一直在尝试创建一个for循环,它将基于网络数据包的长度进行迭代。在API中存在一个变量(size_t),由event.packet->dataLength表示。我想从0到event.packet->dataLength - 7进行迭代,每次增加10,但我遇到了大量麻烦。 我寻找解决方案,但...
在一个跨平台的C/C++项目中(Win32,Linux,OSX),我需要使用*printf函数来打印一些size_t类型的变量。 在某些环境中,size_t是8个字节,在其他环境中则为4个字节。 在glibc中,我可以使用%zd,在Win32中我可以使用%Id。 是否有一种优雅的方式来处理这个问题?
一些系统库,如malloc和strlen,需要或返回size_t作为参数。 在LLVM IR中与这些函数交互的正确选择是什么? 选择任务是否由编译器完成? LLVM IR是否有size_t类型?
这个标题实际上有点误导,但我想让它保持简短。我已经了解了为什么应该使用size_t,常常看到这样的说法: size_t能够表达任何对象(包括数组)最大的大小。 我不是很理解这是什么意思。在一次性分配多少内存上有某种限制,而 size_t 确保足够大以计算该内存块中的每一个字节吗? ...
在C语言中,我看到很多将整数字面值添加或赋值给size_t变量的代码。size_t foo = 1; foo += 1; 这里发生了什么类型转换,是否可能将 size_t "升级" 为 int,然后再转换回 size_t?如果我处于最大值,这种情况会发生截断吗?size_t foo = SIZ...
今天我第一次制作了一个64位的项目版本。基本上,它编译、链接和运行都没问题,只是会有警告提示新的64位size_t类型和简单的int类型之间的不兼容性。这种情况在我的代码中主要出现在以下类似的情况下: void func(std::vector<Something> &v...
是否有一个标准的(或MSVC专有的)typedef,用于包含完整范围size_t值的有符号类型?即在64位系统上,它将是一个128位有符号整数。
我想知道在我的程序运行的系统上,size_t 的最大值是多少。 我的第一反应是使用负数1,就像这样:size_t max_size = (size_t)-1; 但我猜测有更好的方法,或者某个地方定义了一个常量。