UPDATE 2010-08-16: I ran a test today, on Mac OS X 10.6.4 (i386), and the issue has been resolved, @encode(long double)
evaluates to "D"
. I’m not sure when this change happened, or what platforms it effects.
@encode(long double)
returns the same string, "d"
, as @encode(double)
, at least on i386, Mac OS X 10.5.6 / 9G55. But a long double
and a double
are not identical:
double aDouble = M_PI;
long double aLongDouble = M_PI;
NSLog(@"sizeof(aDouble) = %d, sizeof(aLongDouble) = %d",
sizeof(aDouble), sizeof(aLongDouble));
NSLog(@"aDouble = %f", aDouble);
NSLog(@"aLongDouble printed as a double (%%f) = %f", aLongDouble);
NSLog(@"aLongDouble printed as a long double (%%Lf) = %Lf", aLongDouble);
sizeof(aDouble) = 8, sizeof(aLongDouble) = 16
aDouble = 3.141593
aLongDouble printed as a double (%f) =
-88796093704928900002674917893032219152220160.000000
aLongDouble printed as a long double (%Lf) = 3.141593
I haven’t tested another configuration. TYPE_LONGDOUBLE_IS_DOUBLE
in ConditionalMacros.h is 1 under __ppc__
, so this might not be a problem on PowerPC.
Submitted as radar://6468314.