[sane-devel] C undefined operations in sane-backends-1.0.7-beta1
    Jaeger, Gerhard 
    gjaeger at sysgo.de
       
    Fri Jan 25 11:27:03 GMT 2002
    
    
  
Hi there, 
let's have a look at the warnings from the Plustek backend.
The lines that produce the problem include the following statement:
_SWAP(x,y)	(x)^=(y)^=(x)^=(y)
So what? Where's the problem here?
If you take the following expamle, only _SWAP_1 produces the warning,
but does in fact the same as _SWAP_2. I assume, that _SWAP_2 can 
be replaced by _SWAP_1 without any problems...
#include <stdio.h>
#define _SWAP_1(x,y)    ((x)^=(y)^=(x)^=(y))
#define _SWAP_2(x,y) {(x)^=(y); (y)^=(x); (x)^=(y);}
int main( void )
{
        int x,y;
        x = 0xABCDEF01;
        y = 0xFFFFFFFF;
        printf("1. x=0x%08x, y=0x%08x\n", x, y);
        _SWAP_1(x,y);
        printf("2. x=0x%08x, y=0x%08x\n", x, y);
        x = 0xABCDEF01;
        y = 0xFFFFFFFF;
        printf("1. x=0x%08x, y=0x%08x\n", x, y);
        _SWAP_2(x,y);
        printf("2. x=0x%08x, y=0x%08x\n", x, y);
        return 0;
}
I could change this, but why? 
Maybe there's somebody out there to enlighten me!
Gerhard
On Mittwoch, 23. Januar 2002 10:55, Tim Waugh wrote:
[SNIP]
> I get these warnings when compiling sane-backends-1.0.7-beta1.  They
> are for things like:
>
> 	bit = ++bit % 8;
>
> which are indeed undefined.
> plustek-usbshading.c:1056: warning: operation on `wR' may be undefined
> plustek-usbshading.c:1059: warning: operation on `wG' may be undefined
> plustek-usbshading.c:1062: warning: operation on `wB' may be undefined
> plustek-usbshading.c:1090: warning: operation on `wR' may be undefined
> plustek-usbshading.c:1092: warning: operation on `wG' may be undefined
> plustek-usbshading.c:1094: warning: operation on `wB' may be undefined
> plustek-usbshading.c:1168: warning: operation on `wV' may be undefined
> plustek-usbshading.c:1186: warning: operation on `wV' may be undefined
    
    
More information about the sane-devel
mailing list