Hi,

I think there no "correct" result.
On a system that requires 64bit alignment for uint64_t, a C compiler is free
to add extra bytes padding for either processor required alignment or for
faster access.

With gcc you can force packed struct using __attribute__((__packed__))
But compiler may add extra code complexity when you access your data.

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of
Ariset Llerena
Sent: mardi 18 juin 2013 09:25
To: [email protected]
Subject: [Tinycc-devel] wrong/incorrect result of sizeof

the following code

#include <stdint.h>
#include <stdio.h>
struct foobar{
     uint16_t foo; // 4 bytes
     uint64_t bar; // 8 bytes
};
int main(){
     printf("%d\n", sizeof(struct foobar));
     return 0;
}

prints 16, gcc 4.7 prints 12 that is the correct result. Posted in
http://ideone.com/grqlpU

_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel


_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to