Getting a reference to an immutable string

David Zhang straivers98 at gmail.com
Sat Feb 10 22:46:34 UTC 2018


On Saturday, 10 February 2018 at 22:36:41 UTC, ag0aep6g wrote:
> On 02/10/2018 11:26 PM, David Zhang wrote:
>> I've got an immutable string declared in module scope, and I 
>> attempted to get a pointer to its characters through both 
>> &str[0] and str.ptr. However, it appears to me that the string 
>> is behaving like a manifest constant, in that the pointer is 
>> null.
>> 
>> The language reference indicates that it has a location in 
>> memory and thus has a pointer.
>> 
>> So, my question is thus: Is this a bug in DMD, or is this just 
>> something I missed?
>
> The pointer should not be null, even when `str` is a manifest 
> constant. But without code it's impossible to say if you're 
> hitting a compiler bug or if you're doing something wrong.

Ah, yeah.

It appears to occur only when compiled in x86 mode.

This is what I'm talking about:

void createWindow( ... ) {

     assert( wndclassName.ptr ); //This fails

     HWND hwnd = CreateWindowW(
         wndclassName.ptr, //This too
         null,
         0,
         CW_USEDEFAULT, CW_USEDEFAULT,
         CW_USEDEFAULT, CW_USEDEFAULT,
         null,
         null,
         null,
         null
     );
}

wstring wndclassName = "wndclass_name"w;


More information about the Digitalmars-d-learn mailing list