Как порядок байтов влияет на значения перечисления в C ++? - PullRequest
2 голосов
/ 07 ноября 2010

Как порядковый номер влияет на значения перечисления в C ++?

Зависит ли размер перечисления от количества перечислений и, следовательно, некоторые перечисления составляют 1 байт, а другие - 2 или 4 байта?

Как поместить значение перечисления в порядок байтов сети из порядка байтов хоста?

Ответы [ 3 ]

1 голос
/ 07 ноября 2010

Порядковый номер влияет на перечисления не больше или меньше, чем на другие целочисленные типы.

Единственная гарантия размера состоит в том, что для перечисления должно быть возможно хранить значения int; компилятор может свободно выбирать фактический размер на основе заданных элементов (отказ от ответственности: это, безусловно, относится к C, не уверен на 100% для C ++; я проверю ...)

1 голос
/ 07 ноября 2010

Перечисления зависят от компилятора. Они могут быть 1, 2 или 4 байта (см. здесь ). Они должны иметь тот же порядок байтов, что и платформа, на которой они используются.

Чтобы поместить значение перечисления в определенный порядок байтов, вам необходимо знать, в какой системе вы находитесь и чего ожидает сеть. Тогда относитесь как к int. См. здесь для получения справки о конверсиях.

0 голосов
/ 07 ноября 2010
  1. Точно так же, как это влияет на все остальное.
  2. Компилятор свободен в выборе минимально необходимого пространства.
  3. htons (), или если вы знаете, что у вас более 64k значений, htonl ().
...