A question on volatile accesses
    Ron Guilmette 
    rfg at lupine.ncd.com
       
    Sat Nov  3 14:47:00 AEST 1990
    
    
  
Given the following code:
	volatile int *ip;
	void foobar ()
	{
		register int i;
		do
			i = *++ip;
		while (i);
	}
I'd like to know if the standard allows the incrementation of `ip'
to occur *after* the volatile access.
In other words, could the program above legally be treated as:
	volatile int *ip;
	void foobar ()
	{
		register int i;
		do {
			i = *ip;
			++ip;
		} while (i);
	}
This seems entirely counter-intutive to me, and yet one supposedly ANSI
C compiler provides such a treatment.
I guess the question comes down to this: When you dereference a
pre-incremented pointer, can you always safely assume that the
pre-increment has already occured by the time the indirection
through the pointer occurs?
Note that the variable `ip' is not itself volatile.
    
    
More information about the Comp.std.c
mailing list