Not that I know anything about Windows compilers
Jarkko Hietaniemi [Tue, 11 Jun 2002 19:57:23 +0000 (19:57 +0000)]
but Google leads me into believing that while Borland and
GCC support the ANSI way of printing long doubles (%L),
Visual C really doesn't support printing them.

p4raw-id: //depot/perl@17193

ext/XS/APItest/APItest.xs
win32/config_H.bc
win32/config_H.gc

index 085198a..1e8ea35 100644 (file)
@@ -25,7 +25,7 @@ void
 print_long_double()
         CODE:
 #ifdef HAS_LONG_DOUBLE
-#   if LONG_DOUBLESIZE > DOUBLESIZE
+#   if defined(PERL_PRIfldbl) && (LONG_DOUBLESIZE > DOUBLESIZE)
         long double val = 7.0;
         printf("%5.3" PERL_PRIfldbl "\n",val);
 #   else
index 5be778c..3fa348c 100644 (file)
  *     This symbol, if defined, contains the string used by stdio to
  *     format long doubles (format 'f') for input.
  */
-/*#define PERL_PRIfldbl        "f"     /**/
-/*#define PERL_PRIgldbl        "g"     /**/
-/*#define PERL_PRIeldbl        "e"     /**/
-/*#define PERL_SCNfldbl        "f"     /**/
+#define PERL_PRIfldbl  "Lf"    /**/
+#define PERL_PRIgldbl  "Lg"    /**/
+#define PERL_PRIeldbl  "Le"    /**/
+#define PERL_SCNfldbl  "f"     /**/
 
 /* Off_t:
  *     This symbol holds the type used to declare offsets in the kernel.
index a968ec6..85c000a 100644 (file)
  *     This symbol, if defined, contains the string used by stdio to
  *     format long doubles (format 'f') for input.
  */
-/*#define PERL_PRIfldbl        "f"     /**/
-/*#define PERL_PRIgldbl        "g"     /**/
-/*#define PERL_PRIeldbl        "e"     /**/
+#define PERL_PRIfldbl  "Lf"    /**/
+#define PERL_PRIgldbl  "Lg"    /**/
+#define PERL_PRIeldbl  "Le"    /**/
 /*#define PERL_SCNfldbl        "f"     /**/
 
 /* Off_t: