Using out qualifier instead of *, how to pass null?

Kirk McDonald kirklin.mcdonald at
Thu Feb 1 01:06:03 PST 2007

Rick Mann wrote:
> In wrapping this C API, I've been going back and forth between converting "Foo*" output parameters to "out Foo". I prefer the latter, as I don't have to take the address at the call site, but I don't seem to be able to pass null (which the API allows, meaning, "I'm not interested in this return value").
> Am I just stuck with Foo*? Alternatively, I can overload the C function with D wrappers, I suppose. Hmm. That's probably best.

You can't pass it null, for the same reason that you can't pass null to 
a C++ function with a reference parameter.

I would recommend binding the C API as closely as you can, and then 
using D's features in a wrapper around it. Generally speaking, this will 
be the most robust and portable approach. It will give you the 
convenient D version for most uses, and the raw C version when you need 

Kirk McDonald
Pyd: Wrapping Python with D

More information about the Digitalmars-d-learn mailing list