ef_vi_alloc_from_pd
函数接受枚举作为最后一个参数:
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]
如何使用c ++中的ef_vi_alloc_from_pd
?
vi_flags
以及如何致电ef_vi_alloc_from_pd
?vi_flags
?答案 0 :(得分:2)
您可以这样做:
ef_vi_flags vi_flags = ef_vi_flags(EF_VI_FLAGS_DEFAULT | EF_VI_RX_TIMESTAMPS);