簡體   English   中英

GCC4.8 版本 建議在'!'的操作數周圍使用括號

[英]GCC4.8 Version Suggest to use parentheses around operand of '!'

我正在嘗試下面的比較。

if ((tmp->tskt_pRegP->init & 0x1) ||
(rmppP->portAnnounceRecSMP->rcvdAnnounce &&
((!tsn_ptpP->tsn_ptpRegP->tsn_ptpPortRegP[PortNumber]->portEnable & 0x10000)||
(!tsn_ptpP->tsn_ptpRegP->tsn_ptpPortRegP[PortNumber]->portEnable & 0x20000)||
(!tsn_ptpPortAttrP->asCapable))))
{
tsn_ptpPortAttrP->portAnnounceRecSMP->curr = TEST_RECEIVE_STATE_DISCARD;
}

當嘗試使用較新版本的 gcc 4.8 編譯它時,它拋出錯誤:

錯誤:建議在 '!' 的操作數周圍加上括號或將 '&' 更改為 '&&' 或 '!' 到 '~' [-Werror=括號] ((!tsn_ptpP->tsn_ptpRegP->tsn_ptpPortRegP[PortNumber]->portEnable & 0x10000)||

任何人都可以幫我解決這個問題嗎?

在下面的:

(!tsn_ptpP->tsn_ptpRegP->tsn_ptpPortRegP[PortNumber]->portEnable & 0x10000)

! 具有比&更高的優先級,因此適用於tsn_ptpP->tsn_ptpRegP->tsn_ptpPortRegP[PortNumber]->portEnable如果您確實希望將其應用於tsn_ptpP->tsn_ptpRegP->tsn_ptpPortRegP[PortNumber]->portEnable & 0x10000將該表達式括在括號中:

!(tsn_ptpP->tsn_ptpRegP->tsn_ptpPortRegP[PortNumber]->portEnable & 0x10000)  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM