Bill Allombert on Thu, 6 Jan 2000 20:11:53 +0100 (MET)


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

Re: proposed g++ patch


Hello, 
for compiling with g++ I do not need the patch proposed by Igor
but the patch at the end of file instead, however I get the (non fatal) warning

g++ -c -O2 -DGCC_INLINE  -mv8  -I. -I../src/headers  -o init.o ../src/language/init.c
../src/language/init.c: In function `volatile void pari_err(long int ...)':
../src/language/init.c:888: warning: ANSI C++ forbids implicit conversion from `void *' in argument passing

when I compile without it.

I know nothing about C++ so I don't see what is really the trouble.

I use :
$g++ -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.7/2.8.1/specs
gcc version 2.8.1   


g++ do not compile without the following patch:

Index: src/language/init.c
===================================================================
RCS file: /home/megrez/cvsroot/pari/src/language/init.c,v
retrieving revision 1.19
diff -u -r1.19 init.c
--- src/language/init.c 2000/01/05 20:45:04     1.19
+++ src/language/init.c 2000/01/06 19:02:23
@@ -949,15 +949,17 @@

       case operi: case operf:
       {
-        char *op = va_arg(ap, char*), *f;
+        char *op = va_arg(ap, char*);
+       int f;
+       char *opf[]={"addition","multiplication","division","gcd","assignment"};
         long   x = va_arg(ap, long);
         long   y = va_arg(ap, long);
-             if (*op == '+') f = "addition";
-        else if (*op == '*') f = "multiplication";
-        else if (*op == '/' || *op == '%') f = "division";
-        else if (*op == 'g') { op = ","; f = "gcd"; }
-        else { op = "-->"; f = "assignment"; }
-        pariputsf(" %s %s %s %s.",f,type_name(x),op,type_name(y));
+             if (*op == '+') f = 0;
+        else if (*op == '*') f = 1;
+        else if (*op == '/' || *op == '%') f = 2;
+        else if (*op == 'g') { op = ","; f = 3; }
+        else { op = "-->"; f = 4; }
+        pariputsf(" %s %s %s %s.",opf[f],type_name(x),op,type_name(y));
         break;
       }