コードを真に移植可能にしたい場合は、おそらく独自の型を型定義し、たとえば
typedef int32_t instruction32bit;
typedef int64_t instruction64bit;
これはほとんどの場合機能しますが、特定のシステム/コンパイラ/その他で機能しない場合は、次のように追加できます。
#ifdef SOMEDEFINE
typedef long long int instruction64bit;
typedef int instruction32bit;
#else
typedef int32_t instruction32bit;
typedef int64_t instruction64bit;
#endif
もちろん、int32_t と int64_t をサポートしていないコンパイラ/OS (またはそのグループ) のモデルごとに、おそらく特別な#ifdef
.
これは、真に移植性の高いすべてのコードが行うこととまったく同じです。なぜなら、「ほとんどすべてのコンパイラが X を実行している」ことをどれだけ見つけても、コードが十分に普及すれば、「Bob's Compiler Project」でコードをコンパイルしたい人が常にいるからです。にはこの機能がありません。もちろん、もう 1 つは、「ボブのコンパイラ」を使用する人に typedef 自体を編集させ、必然的に送信される「ボブのコンパイラには、これが必要です...」パッチを受け入れないようにすることです。
Carl Norum がコメントで指摘しているように、多くの場合、 を#ifdef
に変換してから、やなどのジェネリック型を使用できます。#if
int
long