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
         ) 
    )
)

-Wno-parentheses您还可以使用开关从 GCC 禁用此检查(如果它是您使用的编译器) 。不管怎样,你应该把这个报告给程序的维护者,让他修复他的代码。

于 2012-06-23T15:22:48.150 回答