Есть ли способ применить явное приведение для typedefs того же типа? Мне приходится иметь дело с utf8, и иногда я путаюсь с показателями количества символов и количества байтов. Так что было бы неплохо иметь typedefs:
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), которое делает это.
EDIT
Я до сих пор не очень люблю венгерские обозначения в целом. Я не мог использовать это для этой проблемы из-за соглашений о кодировании проекта, но я использовал это теперь в другом подобном случае, где также типы одинаковы, и значения очень похожи. И я должен признать: это помогает. Я бы никогда не объявил каждое целое число начальным «i», но, как в примере Джоэля для перекрывающихся типов, это может спасти жизнь.