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