0

sourceforgeからdapl-myrinet-12-0.12をコンパイルしようとしています

私は得た

/root/dapl-myrinet-12-0.12/dapl/udapl/../common/dapl_ep_modify.c:584: erreur:
suggest parentheses around operand of ‘!’ or change ‘&’ to ‘&&’ or ‘!’ to ‘~’

ここに「問題のある」行があります:

if (ep_param->recv_evd_handle != NULL &&
    (DAPL_BAD_HANDLE (ep_param->recv_evd_handle, DAPL_MAGIC_EVD) ||
    ! ((DAPL_EVD *)ep_param->recv_evd_handle)->evd_flags & DAT_EVD_DTO_FLAG))

それを修正する方法はありますか?

4

1 に答える 1

0

エラーが示唆するように、コードは条件の最後の部分の周りのいくつかの括弧を見逃します(修正された条件はここで展開され、一致する括弧を強調表示します):

if (
    ep_param->recv_evd_handle != NULL &&
    (
        DAPL_BAD_HANDLE (ep_param->recv_evd_handle, DAPL_MAGIC_EVD) ||
        !(
            ((DAPL_EVD *)ep_param->recv_evd_handle)->evd_flags & DAT_EVD_DTO_FLAG
         ) 
    )
)

スイッチを使用して、GCC(使用しているコンパイラの場合)からこのチェックを無効にすることもできます-Wno-parentheses。とにかく、あなたはこれをプログラムのメンテナに報告して、彼のコードを修正させるべきです。

于 2012-06-23T15:22:48.150 に答える