лучший способ для жесткого кодирования размеров в с - PullRequest
1 голос
/ 08 января 2012

Я пишу приложение для декодирования двоичных файлов, и мне нужно быть уверенным в размерах моих кусков. Читая документацию, я понял, что указан только минимальный размер, а максимальный зависит от компилятора и / или архитектуры ...

чтобы я мог сделать что-то вроде: *** PSEUDOCODE

unsigned char byte;
if((byte = ~0) > 0xff){
    typedef (unsigned char & 0xff) byte; /* I know.. ;P */
}else{
    typedef unsigned char byte;
}

я должен просто применять битовую маску каждый раз, когда использую unsigned char, чтобы быть уверенным, или есть другой способ жестко закодировать размер для типа, который я не знаю?

ps: причина, по которой это важно для меня, в том, что я собираюсь делать много изменений ... Спасибо;)

1 Ответ

3 голосов
/ 08 января 2012

Используйте типы intN_t и uintN_t из stdint.h , добавленные в C99 (общие значения для N - 8, 16, 32, 64). Они гарантированно имеют фиксированный размер.

...