Thread overview
Multiline String Literals without linefeeds?
Sep 23, 2013
John Carter
Sep 23, 2013
simendsjo
Sep 23, 2013
bearophile
Sep 23, 2013
simendsjo
Sep 23, 2013
bearophile
Sep 23, 2013
Dicebot
Sep 23, 2013
bearophile
Sep 23, 2013
Dicebot
September 23, 2013
In C/C++ in the presence of the preprocessor a string

char foo[] = "\
long\
string\
without\
linefeeds\
";

Is translated by the preprocessor to

char foo[] = "longstringwithoutlinefeeds";

is there a similar mechanism in D? Or should I do...

string foo =
"long"
"string"
"without"
"linefeeds"
;
September 23, 2013
On Monday, 23 September 2013 at 04:43:16 UTC, John Carter wrote:
> In C/C++ in the presence of the preprocessor a string
>
> char foo[] = "\
> long\
> string\
> without\
> linefeeds\
> ";
>
> Is translated by the preprocessor to
>
> char foo[] = "longstringwithoutlinefeeds";
>
> is there a similar mechanism in D? Or should I do...
>
> string foo =
> "long"
> "string"
> "without"
> "linefeeds"
> ;

If I'm not mistaken, this is exactly the way to do it.
A side note - Ds CTFE is quite good, so you can usually build up strings at compile-time using regular functions.
September 23, 2013
John Carter:

> is there a similar mechanism in D? Or should I do...
>
> string foo =
> "long"
> "string"
> "without"
> "linefeeds"
> ;

Genrally you should do:


string foo = "long" ~
             "string" ~
             "without" ~
             "linefeeds";

See also:
http://d.puremagic.com/issues/show_bug.cgi?id=3827

You could also write a string with newlines and then remove them at compile-time with string functions.

Bye,
bearophile
September 23, 2013
On Monday, 23 September 2013 at 09:42:59 UTC, bearophile wrote:
> John Carter:
>
>> is there a similar mechanism in D? Or should I do...
>>
>> string foo =
>> "long"
>> "string"
>> "without"
>> "linefeeds"
>> ;
>
> Genrally you should do:
>
>
> string foo = "long" ~
>              "string" ~
>              "without" ~
>              "linefeeds";
>
> See also:
> http://d.puremagic.com/issues/show_bug.cgi?id=3827
>
> You could also write a string with newlines and then remove them at compile-time with string functions.
>
> Bye,
> bearophile

Isn't "some" "string" replaced with "somestring" early on?
September 23, 2013
simendsjo:

> Isn't "some" "string" replaced with "somestring" early on?

Yes, unfortunately. And it's something Walter agreed with me to kill, but nothing has happened...

Bye,
bearophile
September 23, 2013
On Monday, 23 September 2013 at 11:10:07 UTC, bearophile wrote:
> simendsjo:
>
>> Isn't "some" "string" replaced with "somestring" early on?
>
> Yes, unfortunately. And it's something Walter agreed with me to kill, but nothing has happened...
>
> Bye,
> bearophile

Rationale / link to discussion? I use it extensively.
September 23, 2013
Dicebot:

> Rationale / link to discussion? I use it extensively.

http://d.puremagic.com/issues/show_bug.cgi?id=3827

Bye,
bearophile
September 23, 2013
On Monday, 23 September 2013 at 11:30:18 UTC, bearophile wrote:
> Dicebot:
>
>> Rationale / link to discussion? I use it extensively.
>
> http://d.puremagic.com/issues/show_bug.cgi?id=3827
>
> Bye,
> bearophile

Thanks.

Well, then we will have _guaranteed_ const-folding of adjacent concatenated string literals, I will be perfectly fine with this but it does not seem to be the case right now.