首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用c++代码中的“c样式标志枚举”?

如何使用c++代码中的“c样式标志枚举”?
EN

Stack Overflow用户
提问于 2016-09-19 09:26:21
回答 1查看 233关注 0票数 0

来自ef_vi_alloc_from_pd这个c码函数接受枚举作为最后一个参数:

代码语言:javascript
复制
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)

这个c例中,我们将标志定义为unsigned vi_flags,它起作用:

代码语言:javascript
复制
  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:

代码语言:javascript
复制
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
  • 向编译器添加任何选项吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-19 09:30:04

你可以这样做:

代码语言:javascript
复制
ef_vi_flags vi_flags = ef_vi_flags(EF_VI_FLAGS_DEFAULT | EF_VI_RX_TIMESTAMPS);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39569664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档