ef_vi_alloc_from_pd
функция от this c code принимает перечисление как последний аргумент:Как использовать «c-style flags enum» из кода C++?
int ef_vi_alloc_from_pd(ef_vi* vi, ef_driver_handle vi_dh,
struct ef_pd* pd, ef_driver_handle pd_dh,
int evq_capacity, int rxq_capacity, int txq_capacity,
ef_vi* evq_opt, ef_driver_handle evq_dh,
enum ef_vi_flags flags)
В this c example мы определяем флаги как unsigned vi_flags
и он работает:
unsigned vi_flags;
vi_flags = EF_VI_FLAGS_DEFAULT;
if(cfg_timestamping)
vi_flags |= EF_VI_RX_TIMESTAMPS;
TRY(ef_vi_alloc_from_pd(&res->vi, res->dh, &res->pd, res->dh,
-1, -1, 0, NULL, -1, vi_flags));
Но в C++ это не работает, у меня есть ошибка компиляции при вызове ef_vi_alloc_from_pd error: invalid conversion from ‘unsigned int’ to ‘ef_vi_flags’ [-fpermissive]
Я попытался определить vi_flags как перечисление:
enum ef_vi_flags vi_flags;
vi_flags = EF_VI_FLAGS_DEFAULT;
vi_flags |= EF_VI_RX_TIMESTAMPS;
Но это не компилируется тоже, когда я делаю "| =" error: invalid conversion from ‘int’ to ‘ef_vi_flags’ [-fpermissive]
Как использовать ef_vi_alloc_from_pd
из C++?
- как объявить
vi_flags
и как позвонитьef_vi_alloc_from_pd
? - Как «| =»
vi_flags
? - добавить любые параметры в компилятор?
Просто используйте бросок. –
использовать литье когда? когда я изменяю флаги или когда вызываю функцию? как объявить vi_flags? – javapowered