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