同じ型の typedef に明示的なキャストを強制する方法はありますか? 私は utf8 に対処する必要があり、文字数とバイト数のインデックスと混同されることがあります。したがって、いくつかの typedef があると便利です。
typedef unsigned int char_idx_t;
typedef unsigned int byte_idx_t;
それらの間に明示的なキャストが必要であることに加えて:
char_idx_t a = 0;
byte_idx_t b;
b = a; // compile warning
b = (byte_idx_t) a; // ok
そのような機能がCに存在しないことは知っていますが、それを行うトリックまたはコンパイラ拡張機能(gccが望ましい)を知っているかもしれません。
編集 私はまだハンガリー語の表記法が一般的にあまり好きではありません。プロジェクトのコーディング規則のため、この問題には使用できませんでしたが、タイプも同じで意味も非常に似ている別の同様のケースで使用しました。そして、私は認めなければなりません:それは役に立ちます。「i」で始まるすべての整数を宣言するつもりはありませんが、ジョエルの重複する型の例のように、命を救うことができます。