Enum внутри структуры, что эти enum выполняют в этом коде? - PullRequest
0 голосов
/ 10 марта 2020

Два перечисления в этом коде - что именно они делают? Почему они не просто определены как длинные или короткие? Когда я отлаживаю это состояние 4 байта. Что такое тип ошибки error_code ??

// make this VB compatible...
#pragma pack (4)
#ifndef IntVB
#define IntVB short
#endif

typedef struct tagCommStatus
{   enum Comm status;
    enum CommErr error_code;
    IntVB   nChannel;           
    IntVB   x_comm;     
    IntVB   y_comm;     
    IntVB   t_comm;     
    IntVB   z_comm; 
}CommStatus;

1 Ответ

0 голосов
/ 10 марта 2020

status - это переменная типа 'enum Comm' (или просто Comm, если скомпилирована как C ++) . error_code является переменной-членом типа enum CommErr. Вы не включили код в определения enum, поэтому сложно сказать наверняка, хотя с такими именами, как status и error_code, можно сделать предположение.

В C перечисляет значение по умолчанию, равное целому размеру целого числа (т.е., вероятно, 32 бита на большинстве платформ) . В более новых версиях C ++ вы можете определить базовый тип данных для перечисления, если вы wi sh, например

enum Foo16 : int16_t
{
};
enum Foo8 : uint8_t
{
};
...