什么是兼容的;int";输入32位和;C+中的64位窗口+;? 什么是C++中兼容的“int”数据类型,它可以在64位窗口上调整32字节和8字节的4字节?

什么是兼容的;int";输入32位和;C+中的64位窗口+;? 什么是C++中兼容的“int”数据类型,它可以在64位窗口上调整32字节和8字节的4字节?,c++,types,32bit-64bit,C++,Types,32bit 64bit,尽管INT_PTR工作得很好,但它降低了可读性,其描述告诉我们将其用于指针算法 谢谢如果你在找标准的东西,那你就倒霉了。该标准没有指定任何内置数据类型的大小 请注意,INT_PTR并不意味着指针算法。我的意思是,该类型将具有与void*相同的大小,这正是您想要的。不过,它不能在所有平台上工作(我很确定它是Windows特有的)。这实际上取决于编译器。我认为唯一(或多或少)可靠的方法是使用(void*)这样的指针类型 我认为最好的方法是在头文件中使用一些条件处理并设置自定义类型: #ifdef _

尽管INT_PTR工作得很好,但它降低了可读性,其描述告诉我们将其用于指针算法


谢谢

如果你在找标准的东西,那你就倒霉了。该标准没有指定任何内置数据类型的大小


请注意,
INT_PTR
并不意味着指针算法。我的意思是,该类型将具有与
void*
相同的大小,这正是您想要的。不过,它不能在所有平台上工作(我很确定它是Windows特有的)。

这实际上取决于编译器。我认为唯一(或多或少)可靠的方法是使用(void*)这样的指针类型

我认为最好的方法是在头文件中使用一些条件处理并设置自定义类型:

#ifdef _WIN64
  typedef __int64 NATIVEINT;
#else
  typedef __int32 NATIVEINT;
#endif

(此示例适用于Visual C++)

这可能会对您有所帮助:。不幸的是,您的问题似乎取决于编译器。

标准没有提到具体的大小要求,只是每个整型必须提供至少与其之前的类型相同的存储空间。所以
int
必须与
short
一样多,以此类推。你最好指定你需要它们做什么

如果要查找不随操作环境改变大小的整数,请查看或C99/C++11标题
。它包含的类型包括
uint32\u t
/
int32\u t
uintmax\u t
/
intmax\u t


最重要的是,根据您的问题,它有:
uintpr\u t
/
intptr\u t
。它们保证具有正确的大小,可以在您的平台上容纳指针。

在Visual Studio下,您还可以使用与INT\u PTR功能相同的int3264…

我认为问题是另一个方面-您需要一个不调整大小的数据类型。通过调整数据类型的大小,您会遇到这样的问题:代码可能在一个系统上运行,而不是在另一个系统上运行。int通常是平台中最快的整数类型。例如,如果您需要在循环中计数,只需使用int,让编译器为您执行肮脏的操作。
signed size\u t
?也许你是指gcc的
ssize\t
?:)@阿瓦卡尔:(差不多三年后……)修正了::-)