Как сделать значения перечисления 64-битными в файле .idlC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как сделать значения перечисления 64-битными в файле .idl

Сообщение Anonymous »

Я работаю над проектом WPF с использованием C++ и C#. Я написал файл .idl для связи между этими модулями. Я определил одно перечисление, например

Код: Выделить всё

typedef enum Samp{
Samp1 =1,
Samp2 =2,
Samp3 =4,....
Samp32=4294967296
}SampEnum;
каждое перечисление представляет число с установленным только 1 битом, теперь мне нужно добавить больше перечислений, теперь по умолчанию оно принимает 32 бита, но мне нужно преобразовать его в 64, как это изменить. Я пробовал эти методы, но все они выдают ошибки компилятора.
Первый способ:
я объявил typedef для unsigned long long

Код: Выделить всё

typedef unsigned long long typeUll;
и попытался использовать это внутреннее перечисление как

Код: Выделить всё

typedef enum Samp{
Samp1 =typeUll(1),
Samp2 =typeUll(2),
....
}SampEnum;
Второй способ — использовать @bit_bound, я нашел в какой-то ссылке использование @bit_bound(64) вот так

Код: Выделить всё

@bit_bound(64)
bitmask MyBitMask
{
@position(0) flag0,
@position(1) flag1,
@position(2) flag2,
@position(3) flag3,
...
@position(63) falg63
};
они упомянули, что если мы будем использовать @bit_bound таким образом, он будет преобразован в ---->

Код: Выделить всё

enum MyBitMask : uint64_t
{
flag0 = 1 

Подробнее здесь: [url]https://stackoverflow.com/questions/78489542/how-to-make-enum-values-64-bits-in-idl-file[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»