在一个跨平台的C/C++项目中(Win32,Linux,OSX),我需要使用*printf函数来打印一些size_t类型的变量。 在某些环境中,size_t是8个字节,在其他环境中则为4个字节。 在glibc中,我可以使用%zd,在Win32中我可以使用%Id。 是否有一种优雅的方式来处理这个问题?
“size_t”是否代表编译代码的机器的字长?我使用g++解析时,编译器将“size_t”视为“long unsigned int”。是编译器内部选择了“size_t”的大小,还是“size_t”在调用编译器之前已经在“stddef.h”中进行了预处理宏定义为字长?或者我的理解完全偏离了轨道?
如果我在代码中使用sizeof运算符并利用size_t,我是否一定需要包含stddef.h头文件?我没有包含stddef.h头文件,在MVS2008和Borland C++ BuilderX编译器下都不会有警告。 非常感谢...
在C++中,当我想使用size_t时,我应该包含<stddef.h>还是<cstddef>?我听说过有些人说<cstddef>不好,应该废弃它。为什么会这样呢?
sizeof是C语言的一个关键字,它返回一个名为size_t的类型的大小。然而,size_t并不是一个关键字,而是主要在stddef.h以及可能其他的C标准头文件中定义的。 考虑这样一种情况:您想创建一个不包括任何C标准头文件或库的C程序(比如创建操作系统内核)。在这种代码中,可以使用siz...
C++标准针对std::size_t进行了如下说明: size_t类型是一种实现定义的无符号整数类型,它足够大以包含任何对象的字节大小([expr.sizeof])。 现在我的问题是,这种类型是否与其他无符号整数类型不同。我的意思是,我是否应该能够像这样重载: void myfunc...
我正在使用在nuwen.net上准备的mingw-w64(x64)分支版本的minGW。这是基于gcc 7.1版本:gcc --version gcc (GCC) 7.1.0 我正在编译这个程序:#include <stdio.h> int main(void) { si...
是否有一个标准的(或MSVC专有的)typedef,用于包含完整范围size_t值的有符号类型?即在64位系统上,它将是一个128位有符号整数。
我正在为我的团队调查使用size_t与int(或者long,等等)的标准。目前最大的缺点是如果对两个size_t对象进行差异操作,可能会引起问题(具体问题不确定--也许某些内容没有2的补码并且带符号/无符号可能会使编译器出现错误)。我在使用V120 VS2013编译器编写了一个快速的C++程序...
在C语言中,应该使用哪种类型来表示两个对象大小之间的差异? 由于size_t是无符号的,因此类似以下方式的操作可能会导致错误:size_t diff = sizeof (small_struct) - sizeof (big_struct); 很明显这是不正确的,而且在我看来似乎没有真正的签...