missing HexString documentation

Steven Schveighoffer schveiguy at yahoo.com
Thu Feb 8 13:26:03 UTC 2018


On 2/8/18 1:10 AM, Walter Bright wrote:
> On 2/7/2018 9:45 PM, Ralph Doncaster wrote:
>  > While the fix is a huge improvement, it doesn't match the code 
> generated by the hex literals.  hexString!"deadbeef" stores the 
> null-terminated string in the data section of the object file, while 
> x"deadbeef" only stores 4 bytes in the data section.
> 
>    string s = x"deadbeef";
> 
> stores a null terminated string, too.
> 
> If you want only 4 bytes,
> 
>    __gshared immutable char[4] = hexString!"deadbeef";
> 
> just as you'd do for any string literal.

The extra data in the object file comes from the inclusion of the 
hexStringImpl function, and from the template parameter (the symbol 
_D3std4conv__T9hexStringVAyaa8_6465616462656566ZQBiyAa is in there as 
well, which will always be larger than the actual string passed to 
hexString).

I also see the data in there twice for some reason.

-Steve


More information about the Digitalmars-d mailing list