![](/img/trans.png)
[英]GCC: suggest parentheses around comparison parentheses not able to solve myself
[英]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.