ef_vi_alloc_from_pd
関数は、最後の引数として列挙型を受け入れる:C++コードの "c-style flags enum"の使い方は? <a href="https://github.com/majek/openonload/blob/master/src/lib/ciul/pt_endpoint.c" rel="nofollow">this c code</a>から
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)
我々は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;
しかし、私がやったときに、これは、あまりにもコンパイルされません "| =" Cからef_vi_alloc_from_pd
を使用する方法error: invalid conversion from ‘int’ to ‘ef_vi_flags’ [-fpermissive]
を++?
vi_flags
の宣言方法とef_vi_alloc_from_pd
の呼び出し方法は?- How to "| ="
vi_flags
? - コンパイラにオプションを追加しますか?
ちょうどキャストを使用します。 –
いつキャストを使用しますか?フラグを修正するときや関数を呼び出すとき? vi_flagsを宣言する方法は? – javapowered