でsize_tのは、あなたが次のコードスニペットを持っていると仮定します。印刷OSに依存しないアーキテクチャに依存しない方法
include <stdio.h>
size_t nodeID = 5;
printf("nodeID = %lu", nodeID);
これは、64ビットシステム上で提起されている任意の警告なしに実行されますが、%の変換警告を生成します。 32ビットシステムではluです。
我々は、これは「I」修飾子を使用するVisual Studioの上では動作しません。しかし%z modifier
を使用してそれに対処することができます。
アーキテクチャに依存しない、OSに依存しない方法でこれを解決する方法はありますか?あなたはIIRC、これは古いMSのコンパイラとの互換性の問題を有していてもよく言うようにかかわらず、
#include <stdio.h>
size_t nodeID = 5;
printf("nodeID = %zu\n", nodeID);
:あなたが言うように
すべてのCPU環境で 'nodeID'のサイズが同じになっていない方が良いでしょうか?あなたは 'uint64_t'または' uint32_t'を宣言することができます。これは、プログラムが動作を変更しないようにするためで、x86とx64で異なる動作をしたくない場合です。 –
あなたは10分割で独自の印刷方法を書くことができます。 –
''%zu ''フォーマットは、標準的で独立した方法であるはずです。残念なことに、Visual Studio Cコンパイラは、次の標準規格では、長い間スキップしなければなりませんでした。最後の2つのリリース(2013年と2015年)には完全なC99互換性が必要です。 –