2017-09-27 9 views
1

私は非常に大きなレガシーVisual Studioソリューションを持っています。興味のあるタイプのソースコードでは、unsigned longです。私はこのコードを変更することはできませんし、カウンターとして使用されるそのタイプの変数がロールオーバーするときを知りたいと思います。特定の固定プラットフォームがある場合、sizeofは同じタイプの異なるサイズを返すことができますか?

私は簡単なプログラムstd::cout << sizeof(unsigned long)と異なる非常に小さいのVisual Studioプロジェクトを書いて、私は4を得る:私はsizeof(unsigned long)は大きな液にも4与えることを前提とすることができますか?または、それを変更できるビルド/コンパイラオプションがいくつかありますか?

Microsoftに固有のコンパイラオプションは、プロジェクトごとにビルトインタイプのサイズを変更できますか?

+1

固定サイズの整数が必要な場合は、「」を参照してください。 'unsigned long'についての仮定をしないでください – StoryTeller

+0

@StoryTellerはい、ありがとう、私は' 'を認識しています。 –

+1

私はあなたに、これを求めるための嫌な動機があると思う。あなたの記事に言及する価値があります。あなたがその場合に得られる答えは、おそらく単純なイエス/ノーよりも良いでしょう。 – StoryTeller

答えて

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. 

を参照してください:マイクロソフトのData Type RangesからSO : sizeof basic types

+0

Microsoft docの参照はありますか? –

2

引用:

のVisual C++の32ビットおよび64ビットのコンパイラは、この資料の後半の表の種類を認識しています。

Type   | Bytes 
unsigned long | 4 

Fundamental Types C++

マイクロソフト固有

次の表は、Microsoft C++で 基本的なタイプのために必要なストレージの量を示しています。

     Type       | Size 
float, __int32, int, unsigned int, long, unsigned long | 4 bytes 

だから、答えはイエス(マイクロソフトC++用)。

更新:

は、プロジェクトごとに組み込み型のサイズを変更することができ、マイクロソフトに固有のコンパイラオプションがありますか?

Microsoft C++コンパイラのように、4バイトであることが保証されています。したがって、私はこれを変更できるオプションはないと考えています(少なくとも現在のコンパイラでは)。

+0

あなたが書いたものは正しいですが、私の質問には答えてくれないようです。組み込み型のサイズを変更できるMicrosoft専用のコンパイラオプションはありますか? –

+1

@AlessandroJacopson論理的には、Microsoft C++コンパイラではサイズが常に4であることがドキュメントからわかります。したがって、私は、コンパイラオプション(少なくとも現在のコンパイラでは変更できません)で変更することはできません。投稿を更新しました。 – AMA

関連する問題