私は次のようなことをしようとしています。コードが64ビットマシンでコンパイルされているかどうかを確認するGCCプリプロセッサディレクティブはありますか?
#ifdef 64-bit
#define DECIMAL_FORMAT %ld
#else
#define DECIMAL_FORMAT %d
#endif
.
intptr_t d;
.
printf(“Some message with DECIMAL_FORMAT in the middle of it\n”, d);
変数「D」64ビットマシン上で32ビットマシン上のニーズ「%のD」書式指定と形式指定子「%のLD」intptr_t 'タイプである 。私は、GCCのコマンドラインやソースコードを変更せずに、32ビットマシンと64ビットマシンの両方でコードをコンパイルできるようにするためのソリューションを探しています。
私はあなたの一般的な考え方に同意しますが、長いものに合うポインタには依存しないように注意してください。 64ビットWindowsでは、これらのファイルはありません(http://msdn.microsoft.com/en-us/library/s3f49ktz(VS.71).aspx)。ポインタに関しては、 "%p"が正しい方法です(Fred Larsenが指摘したように)。 –