2017-12-28 53 views
-2

私は以下の比較を試みています。GCC4.8バージョン '!'のオペランドの前後にかっこを使用することを推奨します。

試みが、それは誤り投げているGCC 4.8の新しいバージョンでそれをコンパイルする
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; 
} 

エラー:「!」のオペランドを囲む括弧を提案します「&」を「& &」または「!」に変更します。 ! '〜' [-Werror =括弧] ((tsn_ptpP-> tsn_ptpRegP-> tsn_ptpPortRegP [PortNumberの]へ - > portEnable & 0x10000番地)||

誰もこれを解決するには

+0

&を&と置き換えると問題が解決します。ありがとう! – Johnney

+2

ブール値をとると実際に望んでいるとは思えません。実際には意味がありません。 –

+0

'!tsn_ptpP-> tsn_ptpRegP-> tsn_ptpPortRegP [PortNumber] - > portEnable&0x10000 'to '!(tsn_ptpP> tsn_ptpRegP-> tsn_ptpPortRegP [PortNumber] - > portEnable&0x10000)'であり、同様に次の部分式である。 –

答えて

2

を私を助けてくださいことはできますか?次

(!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) 
+0

@SoronelHaetierあなたは正しいです。私は変更を行い、期待どおりに働いています。ありがとう! – Johnney

関連する問題