Impor verificação de tipo forte em C (rigidez de tipo para typedefs)

Existe uma maneira de aplicar a conversão explícita para typedefs do mesmo tipo? Eu tenho que lidar com utf8 e às vezes fico confuso com os índices da contagem de caracteres e da contagem de bytes. Portanto, é bom ter alguns typedefs:

typedef unsigned int char_idx_t;
typedef unsigned int byte_idx_t;

Além disso, você precisa de uma conversão explícita entre eles:

char_idx_t a = 0;
byte_idx_t b;

b = a; // compile warning
b = (byte_idx_t) a; // ok

Eu sei que esse recurso não existe em C, mas talvez você conheça um truque ou uma extensão do compilador (preferível gcc) que faça isso.

EDITAR Ainda não gosto da notação húngara em geral. Não pude usá-lo para esse problema por causa das convenções de codificação do projeto, mas o usei agora em outro caso semelhante, onde também os tipos são os mesmos e os significados são muito semelhantes. E tenho que admitir: ajuda. Eu nunca declararia todos os números inteiros com um "i" inicial, mas, como no exemplo de Joel para tipos sobrepostos, isso pode salvar vidas.

questionAnswers(9)

yourAnswerToTheQuestion