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

use*_*419 4 c++ int long-integer

我正在编写一个程序来将数据存储到每32位单元(即一次4个字节)的文件中.我在64位Windows系统中编写了代码,但我使用的编译器是32位(mingw32).在当前系统中,int的长度是相同的,32位(4字节).我目前通过使用g ++重新编译(无需更改代码)将代码移植到其他系统.但是,我发现int或long的大小不同,具体取决于系统.是否有任何方式(如在头文件中使用宏)来确定整数的大小,以决定是否应将int或long用作代码中的数据类型?我必须在4种不同类型的系统中重新编译代码,如果我修改代码为每个系统有4个不同的副本,那真的很头疼.

N_A*_*N_A 10

你想要做的是使用标准类型int32_t.此类型始终为32位.我目前在便携式数据库(berkeley db)中使用这些类型以实现跨系统兼容性.

在这里看到所有这些.

包括stdint.h以获取这些定义.