Best practice for strings across D1 and D2

Denis Koroskin 2korden at gmail.com
Tue Mar 15 18:16:45 PDT 2011


On Wed, 16 Mar 2011 02:40:32 +0300, nedbrek <nedbrek at yahoo.com> wrote:

> Hello,
>    I have some wrappers for C functions which I am exporting to D.
>
> For D1, I can just use char*.
>
> For D2, I get compiler errors when I try to assign string constants to my
> char* variables.  It seems the best way is to make them immutable(char).
>
> 1) If I make the functions take immutable(char), will that cause future
> problems when people want to pass in things besides string constants?
>
> 2) What is the best way to make the same declarations work for D1 and D2?
> It seems everything inside a "version" statement must parse correctly,  
> and
> D1 doesn't want to parse "immutable(char)"...
>
> Thanks!
> Ned
>
>

There are a 2 solutions to this question:

- Const!(char)* worked for me (specialize as char* for D1, const(char)*  
for D2. Too bad it's not in Phobos (might get added if requested, though).
- "void foo(in char* bar);" works, too. Use of "auto" will help a lot.  
"in" implies const here.


More information about the Digitalmars-d-learn mailing list