Cannot alias null
Tom Browder via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jun 13 08:04:55 PDT 2014
On Fri, Jun 13, 2014 at 7:59 AM, via Digitalmars-d-learn
<digitalmars-d-learn at puremagic.com> wrote:
> On Thursday, 12 June 2014 at 21:07:47 UTC, Tom Browder via
> Digitalmars-d-learn wrote:
>>
>> What I was really trying to do was D'ify C expressions like this:
>>
>> typedef ((struct t*)0) blah;
>
>
> This doesn't compile for me with GCC, and I don't know what it's supposed to
> mean. ((struct t*) 0) is a value, not a type...
Sorry, you're correct. It is from a C macro and would be used for an
rvalue. Something like this:
$ cat chdr.h
struct t;
#define t_nullptr ((struct t*)0)
struct t* t_ptr = t_nullptr;
After pre-processing with "gcc -E -P" that should read:
$ cat chdr.h.i
struct t;
struct t* t_ptr = ((struct t*)0);
which does compile.
So I'm not sure how to translate that into D. I do know my first
attempt here doesn't work, even with it being surrounded by extern (C)
{}:
$ cat chdr.d
struct t;
struct t* t_ptr = null;
> Where does it come from?
The usage comes from many of the C API headers in the BRL-CAD package
(http://brlcad.org).
Best,
-Tom
More information about the Digitalmars-d-learn
mailing list