C++ 基于系统动态确定整数的类型(c+;+;)
我正在编写一个程序,以每32位(即每次4字节)为单位将数据存储到文件中。我在64位windows系统中编写了代码,但我使用的编译器是32位(mingw32)。在当前系统中,int和long的大小相同,为32位(4字节)。我目前正在使用g++重新编译代码(不更改代码),从而将代码移植到其他系统。然而,我发现int或long的大小是不同的,这取决于系统。这是确定整数大小的任何方法(如在头文件中使用宏),以便确定代码中的数据类型是int还是long?我必须在4种不同类型的系统中重新编译代码,如果我修改代码使每个系统有4种不同的副本,这真是一件令人头痛的事。您要做的是使用标准类型,如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种不同类型的系统中重新编译代码,如果我修改
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
,等等
它们在
中定义,非常感谢。我想这就是我要找的:)