2017-07-20 5 views
3

S'il vous plaît expliquer le sens de "-Wsigned-enum-bitfield" Clang avertissement.Signification de Clang avertissement "-Wsigned-enum-bitfield"

Dans mon code, j'ai une définition d'un struct avec bitfields:

struct Options { 
    BackgroundType backgroundType : 2; 
    LineSpace lineSpace : 2; 
    bool letterSpacing : 1; 
    bool shadow : 1; 
    Qt::AlignmentFlag alignment : 9; 
} options; 

options.alignment = Qt::AlignLeft; 

Lors de la compilation de ce code avec Clang, je reçois l'avertissement suivant:

énumérations dans l'ABI Microsoft sont des entiers signés par défaut; envisager donnant l'ENUM Qt::AlignmentFlag un type non signé sous-jacent de rendre ce code portable

Enum Qt::AlignmentFlag est externe à mon code, et je ne peux pas le changer. Je suis enclin à simplement ignorer cet avertissement. Quel est le pire qui puisse arriver si je laisse ce code tel quel?

+0

@BoPersson S'il vous plaît fournir comme une réponse. –

+0

Je pense que le doublon suggéré indique déjà ce scénario. –

Répondre

1

Si l'enum utilise tous les 9 bits, vous obtenez un nombre négatif en le relisant. Pourrait vous donner des problèmes en le comparant à une autre valeur.