Целые числа фиксированной ширины в C++

Вам не хватает закрывающей скобки "}" для moreThanOnce (). У него четыре открытые скобки, но только три закрывающие.

Большинство редакторов, ориентированных на код, подберут для вас фигурные скобки и помогут отследить несбалансированные фигурные скобки (и символы скобок, и т. Д.). Выясните, как это сделать в редакторе, поскольку это необходимо для всего программирования. карьера.

19
задан RzR 27 January 2012 в 16:30
поделиться

6 ответов

Boost has the typedefs for all of the C99 types and more: «Увеличить целочисленную библиотеку»

12
ответ дан 30 November 2019 в 03:16
поделиться

Включите файл , чтобы получить определения для таких типов, как uint16_t . VC ++ не поставляется с по умолчанию, но вы можете получить этот файл из нескольких мест. В Википедии перечислено несколько, и Google найдет для вас гораздо больше.

7
ответ дан 30 November 2019 в 03:16
поделиться

Вы можете обойти проблему с некоторыми директивами #ifdef .

#ifdef _MSC_VER
   typedef __int16 int16_t
#else
   #include <stdint.h>
#endif
18
ответ дан 30 November 2019 в 03:16
поделиться

Будет ли следующий стандарт C ++ определять целые числа фиксированной ширины?

Да.

Как сказал Мерадад, сейчас вы можете использовать #ifdefs . Альтернативой может быть какой-то сложный шаблон магии. У Boost есть кое-что в этом направлении, библиотека Boost Integer .

3
ответ дан 30 November 2019 в 03:16
поделиться

Я использовал общедоступную (не GPL - настоящая общедоступная) версию stdint.h Дэнни Смита, который доступен в пакете mingw:

Мне пришлось настроить эту версию для компиляции с некоторыми компиляторами не VC 8 (в основном VC6) - это мне хорошо послужило.

Возможно, на днях я найду где-нибудь опубликовать свою VC6-совместимую версию. Изменения были довольно незначительными - просто некоторые хитрости с макросами для использования ключевых слов VC6 для 64-битных типов. Если вам не нужна поддержка VC6, вероятно, вам подойдет версия mingw.

1
ответ дан 30 November 2019 в 03:16
поделиться

There are different paths to take. Most environments would hold that short ints are 16 bits, and long ints are 32. (The long is implied when you declare simply int.) If you typedef your own int16 type, you'll probably end up using a short int.

Another possibility lies with bit fields in structs. You can say something like:

struct x {
    int a : 16;
    int b : 5;
    ...
};

And so forth. If you then define:

struct x myvar;
myvar.a = 54;

You can be sure that myvar.a will hold 16 bits, and myvar.b will use 5; the total size of myvar rounding up for what all the bits comprise, plus of course the size of any other fields.

0
ответ дан 30 November 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: