comparison of structures

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hi,

the following C code 

typedef struct {
    int32_t a;
    void *b;
} S;
void fs() {
    char t[255];
    int i;
    for(i=0;i<255;i++)
        t[i]=(char)(i+1);
}
int cmp1(S a1, S a2) {
    return !memcmp(&a1,&a2,sizeof(S));
}
int cmp2(S a1, S a2) {
    return a1.a==a2.a && a1.b==a2.b;
}
void put(S y) {
    int a,b;
    S x;
    x=y;
    a=cmp1(x,y);
    b=cmp2(x,y);
    printf("a=%d b=%d\n",a,b);
}
int main() {
    S a;
    a.a=1;
    a.b=&a;
    fs();
    put(a);
    return 0;
}

compiled for my linux x86_64 using the amd64 ABI (-march=athlon64) with gcc 
3.4.4 prints "a=0 b=1"

i have seen why and it is clear to me how a such result is produced.
i think that it is not a bug and that the structure can not be compared using 
'memcmp'.

do you agree or it a bug ?

regards
josé


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux