Marcus schrieb:
>>> Warning right shift count >= width of type [-Wshift-count-overflow]
>>> DMA c:\users\marcus\Documents\Atmel Studio\7.0\DMA\DMA\xmega_dma.c 69
> Weil es nur ein 16 Bit Typ ist?
Nö, weil "right shift count >= width of type". Es spielt für diese
Warnung keine Rolle, welcher Typ es genau ist, das einzige, was eine
Rolle spielt: es wird so weit geschoben, dass immer nur 0 oder -1
rauskommen kann.
Sprich: du kannst dir das Schieben sparen und im Falle eines unsigned
Types einfach 0 zurückgeben, im Falle eines signed Types je nach
Vorzeichen 0 oder -1.
Oder anders ausgedrückt: dein Code ist offensichtlicher logischer
Schwachsinn, so offensichtlich, dass es sogar der Compiler bemerken
kann, der logische Fehler normalerweise eher nicht aufspüren kann. Das
ist allerdings auch nicht seine Aufgabe, der hat eigentlich nur die
syntaktische Korrektheit zu prüfen, aber wenn's gerade abfällt, ist es
doch nett von ihm, den unfähigen User auf seinen Fehler mit einer
Warnung hinzuweisen, oder?