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