33得票10回答
跨平台的格式化字符串如何处理size_t类型的变量?

在一个跨平台的C/C++项目中(Win32,Linux,OSX),我需要使用*printf函数来打印一些size_t类型的变量。 在某些环境中,size_t是8个字节,在其他环境中则为4个字节。 在glibc中,我可以使用%zd,在Win32中我可以使用%Id。 是否有一种优雅的方式来处理这个问题?

33得票6回答
size_t是表示大小的类型吗?

“size_t”是否代表编译代码的机器的字长?我使用g++解析时,编译器将“size_t”视为“long unsigned int”。是编译器内部选择了“size_t”的大小,还是“size_t”在调用编译器之前已经在“stddef.h”中进行了预处理宏定义为字长?或者我的理解完全偏离了轨道?

31得票3回答
当我使用sizeof和size_t时,我是否应该始终包含stddef.h头文件?

如果我在代码中使用sizeof运算符并利用size_t,我是否一定需要包含stddef.h头文件?我没有包含stddef.h头文件,在MVS2008和Borland C++ BuilderX编译器下都不会有警告。 非常感谢...

30得票5回答
我该包含stddef.h还是cstddef来使用size_t?

在C++中,当我想使用size_t时,我应该包含<stddef.h>还是<cstddef>?我听说过有些人说<cstddef>不好,应该废弃它。为什么会这样呢?

27得票10回答
为什么size_t不是C语言的关键字?

sizeof是C语言的一个关键字,它返回一个名为size_t的类型的大小。然而,size_t并不是一个关键字,而是主要在stddef.h以及可能其他的C标准头文件中定义的。 考虑这样一种情况:您想创建一个不包括任何C标准头文件或库的C程序(比如创建操作系统内核)。在这种代码中,可以使用siz...

27得票3回答
std::size_t是一个独立的类型吗?

C++标准针对std::size_t进行了如下说明: size_t类型是一种实现定义的无符号整数类型,它足够大以包含任何对象的字节大小([expr.sizeof])。 现在我的问题是,这种类型是否与其他无符号整数类型不同。我的意思是,我是否应该能够像这样重载: void myfunc...

26得票3回答
如何在mingw-w64 gcc 7.1中printf一个size_t而不出现警告?

我正在使用在nuwen.net上准备的mingw-w64(x64)分支版本的minGW。这是基于gcc 7.1版本:gcc --version gcc (GCC) 7.1.0 我正在编译这个程序:#include <stdio.h> int main(void) { si...

26得票4回答
一个可以包含size_t的有符号类型的typedef是什么?

是否有一个标准的(或MSVC专有的)typedef,用于包含完整范围size_t值的有符号类型?即在64位系统上,它将是一个128位有符号整数。

24得票3回答
两个size_t对象相减是否安全?

我正在为我的团队调查使用size_t与int(或者long,等等)的标准。目前最大的缺点是如果对两个size_t对象进行差异操作,可能会引起问题(具体问题不确定--也许某些内容没有2的补码并且带符号/无符号可能会使编译器出现错误)。我在使用V120 VS2013编译器编写了一个快速的C++程序...

23得票4回答
两个size_t相减的类型是什么?

在C语言中,应该使用哪种类型来表示两个对象大小之间的差异? 由于size_t是无符号的,因此类似以下方式的操作可能会导致错误:size_t diff = sizeof (small_struct) - sizeof (big_struct); 很明显这是不正确的,而且在我看来似乎没有真正的签...