C++ 如何使用;c样式标志枚举“;来自c++;密码?

C++ 如何使用;c样式标志枚举“;来自c++;密码?,c++,enums,C++,Enums,ef_vi_alloc_from_pd函数from接受枚举作为最后一个参数: 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_d

ef_vi_alloc_from_pd
函数from接受枚举作为最后一个参数:

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)
在中,我们将标志定义为
无符号vi_标志
,它可以工作:

  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++中它不工作,当调用EFSviiALoLoCyOf.PoP<代码>错误时,我有编译错误:无效的从“未签名int”转换为“EfSviviFLAGS”[-fPrime]

我尝试将vi_标志定义为枚举:

enum ef_vi_flags vi_flags;
vi_flags = EF_VI_FLAGS_DEFAULT;
vi_flags |= EF_VI_RX_TIMESTAMPS;
但当我执行“|=”
错误:从“int”到“ef|vi_标志”[-fppermissive]的转换无效时,这也不会编译

< C++ >

如何使用<代码> EFSvivialAlLogyOf.Pd < /Cuff>?
  • 如何声明vi_标志以及如何从pd调用ef_vi_alloc_
  • 如何“|=”
    vi_标志
  • 向编译器添加任何选项
您可以:

ef_vi_flags vi_flags = ef_vi_flags(EF_VI_FLAGS_DEFAULT | EF_VI_RX_TIMESTAMPS);
你可以:

ef_vi_flags vi_flags = ef_vi_flags(EF_VI_FLAGS_DEFAULT | EF_VI_RX_TIMESTAMPS);

什么时候用石膏?当我修改标志或调用函数时?如何声明vi_标志?何时使用强制转换?当我修改标志或调用函数时?如何声明vi_标志?我有这样的编译错误
expected';'在'vi_flags'之前,ef_vi_flags vi_flags=ef_vi_flags(ef_vi_flags_默认值| ef_vi_RX_时间戳)。尝试使用
enum ef_vi_flags vi_flags=…
并再次编译错误
无法将参数“1”的“ef_vi_flags”转换为“ef_vi*”,将参数“1”转换为“ef_vi_flags ef_vi_flags(ef_vi*)”enum ef_vi_flags vi_flags=ef_vi_flags(ef_vi_flags\u默认值)
您是否在某个地方定义了
enum ef_vi_flags
?当然,例如
enum ef_vi_flags vi_flags=ef_vi_flags\u DEFAULT仅编译fine@javapowered:是否
ef_vi_flags vi_flags=ef_vi_flags\u默认值为您编译?您使用哪种编译器?这不会编译
错误:应为';'在'vi_flags'之前,ef_vi_flags vi_flags=ef_vi_RX_时间戳我正在使用gcci,有这样的编译错误
预期';'在'vi_flags'之前,ef_vi_flags vi_flags=ef_vi_flags(ef_vi_flags_默认值| ef_vi_RX_时间戳)。尝试使用
enum ef_vi_flags vi_flags=…
并再次编译错误
无法将参数“1”的“ef_vi_flags”转换为“ef_vi*”,将参数“1”转换为“ef_vi_flags ef_vi_flags(ef_vi*)”enum ef_vi_flags vi_flags=ef_vi_flags(ef_vi_flags\u默认值)
您是否在某个地方定义了
enum ef_vi_flags
?当然,例如
enum ef_vi_flags vi_flags=ef_vi_flags\u DEFAULT仅编译fine@javapowered:是否
ef_vi_flags vi_flags=ef_vi_flags\u默认值为您编译?您使用哪种编译器?这不会编译
错误:应为';'在'vi_flags'之前,ef_vi_flags vi_flags=ef_vi_RX_时间戳我正在使用gcc