我有一个非常大的遗留Visual Studio解决方案,在一些源代码中,我感兴趣的类型是unsigned long
。我无法更改此代码,我想知道该类型的变量(用作计数器)何时会翻转。
我用一个简单的程序std::cout << sizeof(unsigned long)
编写了一个不同的非常小的Visual Studio项目,我得到4
:我可以假设sizeof(unsigned long)
在大解决方案中也给4
?或者是否有一些构建/编译器选项可以改变它?
是否有任何特定于Microsoft的编译器选项可以在每个项目的基础上改变内置类型的大小?
答案 0 :(得分:2)
Microsoft的Data Type Ranges:
引用Visual C ++ 32位和64位编译器可识别本文后面的表中的类型。
Type | Bytes unsigned long | 4
Microsoft特定
下表列出了所需的存储量 Microsoft C ++中的基本类型。
Type | Size float, __int32, int, unsigned int, long, unsigned long | 4 bytes
所以答案是是(对于Microsoft C ++)。
<强>更新强>
是否有任何特定于Microsoft的编译器选项可以在每个项目的基础上改变内置类型的大小?
从文档看起来,Microsoft C ++编译器保证它是4个字节。因此,我假设没有可以改变这种情况的选项(至少对于现有的编译器而言)。
答案 1 :(得分:0)
我可以假设sizeof(unsigned long)在大解决方案中也给出了4吗?
是专门的(Windows,Visual Studio)。 一般情况下没有。
sizeof( void *) : depends on the target platform.
sizeof( long ) : standard guarantees at least 4 bytes, but it could be larger.