[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gl_list API
From: |
Ben Pfaff |
Subject: |
Re: gl_list API |
Date: |
Sun, 18 Apr 2021 12:27:57 -0700 |
On Tue, Apr 6, 2021 at 1:30 PM Bruno Haible <bruno@clisp.org> wrote:
> Paul Eggert wrote:
> > Yes, that would be portable. But that cast indicates another problem
> > with the API. It should return void *, not void const * (think of strchr
> > as the model here).
>
> strchr is a bad model here: You pass it a pointer to a read-only storage
> (such as a literal string) and receive a pointer that you "can" write
> to: The compiler cannot warn about
> strchr ("literal", 'e') [2] = 'x';
I've gotten in the habit of having two functions in cases like this. If
strchr were designed according to the principles that I try to apply,
we'd have functions like this:
const char *strchr (const char *, int);
char *strchr_rw (char *, int);
The implementation of strchr is then just a wrapper around the
strchr_rw():
const char *
strchr (const char *s, int c)
{
return strchr_rw ((char *) s, c);
}
although if I'm doing this in PSPP I would probably use CONST_CAST:
return strchr_rw (CONST_CAST (char *, s), c);
- Re: Type-safe typecasts, (continued)
- Re: Type-safe typecasts, Paul Eggert, 2021/04/06
- Re: Type-safe typecasts, Marc Nieper-Wißkirchen, 2021/04/06
- Re: Type-safe typecasts, Paul Eggert, 2021/04/06
- Re: Type-safe typecasts, Marc Nieper-Wißkirchen, 2021/04/06
- Re: gl_list API, Bruno Haible, 2021/04/06
- Re: gl_list API, Paul Eggert, 2021/04/06
- Re: gl_list API, Bruno Haible, 2021/04/06
- Re: gl_list API, Marc Nieper-Wißkirchen, 2021/04/06
- Re: cast macros, Bruno Haible, 2021/04/06
- Re: cast macros, Ben Pfaff, 2021/04/18
- Re: gl_list API,
Ben Pfaff <=
- Re: Type-safe typecasts, Bruno Haible, 2021/04/06
Re: Type-safe typecasts, Ben Pfaff, 2021/04/06