Обеспечить строгую проверку типов в C (строгость типов для typedefs)

Есть ли способ обеспечить явное приведение для typedefs того же типа? Мне приходится иметь дело с utf8, и иногда я путаюсь с показателями количества символов и количества байтов. Так что было бы неплохо иметь некоторые определения типов:

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», но, как в примере Джоэля для перекрывающихся типов, это может спасти жизнь.

Ответы на вопрос(9)

Ваш ответ на вопрос