On Thu, Jan 27, 2005 at 03:00:06PM -0500, Frank D. Engel, Jr. wrote:

> I think it is an internal thing with gcc that the size of a pointer and 
> sizeof(int) are always the same, regardless of machine word size... 
> with a 64-bit binary, sizeof(int) and sizeof(void *) should both be 8, 
> which still causes them to be equal.

Not with gcc 3.4.2 on Solaris 9/sparc -- maybe you're thinking of
sizeof(long).

% cat foo.c
#include <stdio.h>

int
main(void)
{
    printf("sizeof(void *) = %d\n", sizeof(void *));
    printf("sizeof(int)    = %d\n", sizeof(int));
    printf("sizeof(long)   = %d\n", sizeof(long));
    return 0;
}

% gcc -m32 -o foo foo.c
% ./foo
sizeof(void *) = 4
sizeof(int)    = 4
sizeof(long)   = 4

% gcc -m64 -o foo foo.c
% ./foo 
sizeof(void *) = 8
sizeof(int)    = 4
sizeof(long)   = 8

-- 
Michael Fuhr
http://www.fuhr.org/~mfuhr/

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to