Anfängerfrage zu einer Fehlermeldung.

13/10/2009 - 20:12 von Martin Freiberg | Report spam
Ich bin gerade dabei zur Übung ein Kernelmodul zu schreiben.


Variablen Definition:
short errzaehl = 0;


Im Programm (in einer Funktion):

errzaehl = ++errzaehl & 0x1FFF;

Ergibt beim Kompilieren für diese Zeile die Meldung:

Warnung: Operation auf >errzaehl< könnte undefiniert sein.

Ändere ich das ganze hingegen ab:

++errzaehl;
errzaehl = errzaehl & 0x1FFF;

gibt es keine Warnung. Da ist der gcc zufrieden. Warum?

gcc 3.4.6 (Ubuntu 3.4.6-8ubuntu2) unter Linux.

Danke und Gruß
Martin
 

Lesen sie die antworten

#1 Claudio Carobolante
13/10/2009 - 21:45 | Warnen spam
Martin Freiberg schrieb:

Ich bin gerade dabei zur Übung ein Kernelmodul zu schreiben.

Variablen Definition:
short errzaehl = 0;

Im Programm (in einer Funktion):

errzaehl = ++errzaehl & 0x1FFF;

Ergibt beim Kompilieren für diese Zeile die Meldung:

Warnung: Operation auf >errzaehl< könnte undefiniert sein.

Ändere ich das ganze hingegen ab:

++errzaehl;
errzaehl = errzaehl & 0x1FFF;

gibt es keine Warnung. Da ist der gcc zufrieden. Warum?

gcc 3.4.6 (Ubuntu 3.4.6-8ubuntu2) unter Linux.



Auf das Objekt 'errzaehl' wir im ersten Beispiel zwischen zwei
Sequenzpunkten mehr als einmal schreibend zugegriffen. Wie sich ein
Programm (der Wert in dem Objekt) dann zu verhalten hat, ist nicht
definiert.

cc

Ähnliche fragen