Как я могу упомянуть базовый тип данных для перечисления (c ++) в буферах протокола?

Я хочу объявить enum, но я хочу, чтобы он явно имел размер int8_t. Согласно документации protbuf [1], сгенерированное перечисление в c ++ является стандартным перечислением c ++ без явного упоминания базового типа.

то есть декларация как это:

enum Foo {
VALUE_A = 0;
VALUE_B = 5;
VALUE_C = 1234;
}

Будет генерировать что-то вроде этого:

enum Foo {
VALUE_A = 0;
VALUE_B = 5;
VALUE_C = 1234;
Foo_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
Foo_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
}

Могу ли я в любом случае заставить протобуф сгенерировать перечисление с типом, явно указанным в определении? Что-то вроде этого:

enum Foo : int8_t {
VALUE_A = 0;
VALUE_B = 5;
VALUE_C = 1234;
Foo_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
Foo_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
}

Зачем мне это нужно?

Я хочу переслать декларацию моего прото-перечисления, и для пересылки декларации перечисления вам нужно:

  1. Упомяните тип данных (чтобы компилятор мог принять размер, используемый объектом)

  2. Объявление перечисления должно упоминать тот же тип, что и определение [2]

Любая помощь приветствуется.

[1] https://developers.google.com/protocol-buffers/docs/reference/cpp-generated#enum

[2] https://stackoverflow.com/a/42768812/3069919

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]