Hi,

das liegt daran, dass der Datentyp "volatile int" ist und nicht die Variable! Der Typ bezieht sich dann auf alle folgenden Variablen in der gleichen Anweisung.

Ist z.B. ganz analog zu "unsigned": unsigned int t1, t2;

Beide(!) Variablen sind vom Typ "unsigned int".

Das ginge auch: volatile unsigned int vui1, vui1;

Wenn dein Compiler "typedef" erlaubt, kannst du schreiben:
typedef volatile unsigned int vui_t;
vui_t foo1, foo2;
vui_t *foo3 = &foo2;
foo3 ist dann ein nicht volatiler Pointer auf eine Variable eines volatilen Datentyps. Das heißt: foo3 kann im Register gehalten werden, aber der referenzierte Variableninhalt (d.h. foo2) muss jedes mal wieder neu gelesen werden.