erreur:建议围绕'!'操作数括号或将'&'改为'&&'或'!'改为'〜'

时间:2012-06-23 15:17:48

标签: logical-operators

我正在尝试从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))

任何想法如何修复它?

1 个答案:

答案 0 :(得分: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
         ) 
    )
)

您也可以使用-Wno-parentheses开关禁用GCC(如果它是您使用的编译器)的此检查。无论如何,你应该向程序的维护者报告,以便修改他的代码。