Forum: Compiler & IDEs Problem mit shift


von max (Gast)


Lesenswert?

Hallo und frohe Weinachten

Kann mir von euch jemand erklären warum folgendes Code eine warnung
beim compilieren ausgibt:

PLL0STAT = (1 << PLOCK_STAT);

Die Warnung lautet:
warning: left shift count >= width of type

Definiert ist alles folgendermasen:
#define REG16         (volatile unsigned short*)
#define BIT10         0x00000400
#define PLL0STAT      (*(REG16 (0xE01FC088)))
#define PLOCK_STAT    BIT10

Das ganze wird mit dem GCC für ARM compiliert:
arm-elf-gcc (GCC) 4.0.1 (WinARM)

Beim ARMGCC sind short Variablen doch 2Byte lang, da müsste doch ein
schift um 10 bit fungtionieren. Oder ich hab einfach nur ein brett vorm
Kopf und seh den Fehler nicht.

mfg
Max

von A.K. (Gast)


Lesenswert?

Das klappt so nur auf einer Maschine, deren Datentyp "in" mindesten
1025 Bits gross ist.

Was steht denn da?
  PLL0STAT = (1 << 1024);

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

PLOCK_STAT definierst du als BIT10 was als 0x400 definiert ist. Du
shiftest deine 1 als um 1024 Stellen nach links. Das ist dann doch
etwas viel :-)

Matthias

von max (Gast)


Lesenswert?

Hallo

ok, ihr habt recht. Wie gesagt, bei mir hat sich das ganz logisch
angehört ;) Jetzt gehts auf jeden fall. Danke!

Max

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.