2016-08-10 15 views
1

Visual Studio 2015を使用して、32ビットプラットフォームと64ビットプラットフォームでプロジェクトをビルドしています。フォーマット指定子32ビット - 64ビット

Sizeofは、32ビットプラットフォームでは符号なし整数を返し、64ビットプラットフォームでは符号なし__int64を返します。

printf ("limit is %u. \n",sizeof(var)); 

が、私は両方のプラットフォームで同じコードをコンパイルする必要があります。

は、私は、次のコードを持っています。書式指定子%uを使用すると64ビットで警告が表示され、%I64uを使用すると32ビットで警告が表示されます。 printfを2回書くことなく(ifdef _WIN32で)両方のプラットフォームでformatspecifierを使う方法はありますか?私は私のプロジェクトでこれらの警告をたくさん持っています。これは多くの仕事であり、「きれいに」見えません。

答えて

3

sizeofは、size_tです。

%zuをそのタイプのフォーマット指定子として使用します。すべてのプラットフォームで明確に定義されています。

関連する問題