プログラムが使用するメモリの量を出力するコードがあります。行は次のようになります。
printf("The about of RAM used is %u", anIntVariable*sizeof(double) );
ここで、anIntVariable は double 配列の要素数の int 変数です。いずれにせよ、32 ビット システムでは問題はありませんでしたが、64 ビット システムでは、符号なし long 整数に「%u」を使用することに関するコンパイラの警告が表示されます。形式コードとして "%lu" を使用すると、64 ビットの問題は修正されますが、型が unsigned int に戻るため、コンパイラは 32 ビットでエラーを発生させます。実際、sizeof(double) は 32 ビット システムと 64 ビット システムで異なる値を返すことがわかりました。コードを 32 ビットから 64 ビットに変換するための Web ページ ガイドをいくつか見つけました。
この行をプラットフォームに依存しない方法で記述するにはどうすればよいですか? プリプロセッサ ディレクティブを使用して実行できる方法はたくさんありますが、それはハックのようです。確かに、私が気づいていないエレガントな方法があります。