Folgende Warnungen nach compilieren?



  • (A)
    code:

    return m_bEndStateFlags & (1<<iBit);
    

    warnung: warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)

    (B)

    code:

    ASSERT(0 <= iBit <=7);
    

    warnung: warning C4804: '<=' : unsafe use of type 'bool' in operation



  • @A: Was ist denn der Rückgabetyp der zugehörigen Funktion? Wenn das ein bool ist, kannst du die Warnung entweder ignorieren oder mit 'return (m_bEndStateFlags & (1<<iBit))!=0;' entschärfen.

    @B: Du kannst Vergleiche nicht zusammenfassen zu Bereichsüberprüfungen (du vergleichst iBit mit 0 und das Ergebnis dieses Vergleichs (true oder false) mit 7) - korrekt muß das 'ASSERT(0<=iBit && iBit<=7);' lauten.


Anmelden zum Antworten