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