pan-users
[Top][All Lists]
Advanced

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

Re: [Pan-users] Re: make errors


From: walt
Subject: Re: [Pan-users] Re: make errors
Date: Wed, 18 Jun 2008 20:34:10 -0700
User-agent: Thunderbird 3.0a2pre (X11/2008061806)

David Shochat wrote:

On Jun 18, 2008, at 8:27 PM, walt wrote:

This is quoted from http://gcc.gnu.org/gcc-3.4/changes.html :

# The cast-as-lvalue extension has been removed for C++ and deprecated
for C and Objective-C. In particular, code like this:

char *p;
((int *) p)++;

is no longer accepted for C++ and will not be accepted for C and
Objective-C in a future version.

Unfortunately I don't know the proper fix, but I'm hoping I'll get an
answer to that question tomorrow in the gcc-help mailing list.

How about:

char *p;
...
int *q = (int *) p;
q++;
p = (char *) q;

That would have the same net effect and is accepted by gcc 4.2.3, which
does not accept the original construct.

Well, here is my first attempt at implementing your suggestion, but it
produces exactly the same compiler error as the original code.  Perhaps
in the morning when I'm more awake I'll do better.

--- pan/base/msort.c.orig       2001-06-18 11:33:38.000000000 -0700
+++ pan/base/msort.c    2008-06-18 20:19:08.000000000 -0700
@@ -43,6 +43,7 @@
        char *tmp;
        char *b1, *b2;
        size_t n1, n2;
+       unsigned long int *qtmp, *qb1, *qb2;
        const int opsiz = sizeof(unsigned long int);

        if (n <= 1)
@@ -65,14 +66,22 @@
                        if ((*cmp) (b1, b2) <= 0)
                        {
                                --n1;
-                               *((unsigned long int *) tmp)++ =
+                               *qtmp = *((unsigned long int *) b1)++;
+                               qtmp++;
+                               tmp = (char *)qtmp;
+/*                             *((unsigned long int *) tmp)++ =
                                        *((unsigned long int *) b1)++;
+*/
                        }
                        else
                        {
                                --n2;
-                               *((unsigned long int *) tmp)++ =
+                               *qtmp = *((unsigned long int *) b2)++;
+                               qtmp++;
+                               tmp = (char *)qtmp;
+/*                             *((unsigned long int *) tmp)++ =
                                        *((unsigned long int *) b2)++;
+*/
                        }
                }
        else




reply via email to

[Prev in Thread] Current Thread [Next in Thread]