Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基于系统动态确定整数的类型(c+;+;)_C++_Int_Long Integer - Fatal编程技术网

C++ 基于系统动态确定整数的类型(c+;+;)

C++ 基于系统动态确定整数的类型(c+;+;),c++,int,long-integer,C++,Int,Long Integer,我正在编写一个程序,以每32位(即每次4字节)为单位将数据存储到文件中。我在64位windows系统中编写了代码,但我使用的编译器是32位(mingw32)。在当前系统中,int和long的大小相同,为32位(4字节)。我目前正在使用g++重新编译代码(不更改代码),从而将代码移植到其他系统。然而,我发现int或long的大小是不同的,这取决于系统。这是确定整数大小的任何方法(如在头文件中使用宏),以便确定代码中的数据类型是int还是long?我必须在4种不同类型的系统中重新编译代码,如果我修改

我正在编写一个程序,以每32位(即每次4字节)为单位将数据存储到文件中。我在64位windows系统中编写了代码,但我使用的编译器是32位(mingw32)。在当前系统中,int和long的大小相同,为32位(4字节)。我目前正在使用g++重新编译代码(不更改代码),从而将代码移植到其他系统。然而,我发现int或long的大小是不同的,这取决于系统。这是确定整数大小的任何方法(如在头文件中使用宏),以便确定代码中的数据类型是int还是long?我必须在4种不同类型的系统中重新编译代码,如果我修改代码使每个系统有4种不同的副本,这真是一件令人头痛的事。

您要做的是使用标准类型,如
int32\t
。此类型始终为32位。我目前在可移植数据库(berkeley db)中使用这些类型以实现跨系统兼容性

看看所有这些

包含stdint.h以获得这些定义。

您可以使用sizeof(int)来确定整数的大小


如果需要特定的大小,应该使用stdint.h中的int32_t(或int64_t)

这是C99提供的规范解决方案的常见问题

定义一组类型,提供特定大小、最快大小和最小大小的整数。这在解决你的问题时非常有用


您使用mingw32是件好事,因为不幸的是,上次我检查Microsoft时,他们的API没有提供stdint.h。如果有人确实需要在Windows上使用此功能,则有一个开源版本,请参阅:

IMO解决此问题的最佳方法是不使用
int
long
等,而是使用独立于平台的类型别名:
int8\u t
int16\u t
int32\t
int64\t
,等等


它们在

中定义,非常感谢。我想这就是我要找的:)