missing HexString documentation

Ralph Doncaster nerdralph at github.com
Thu Feb 8 05:04:04 UTC 2018


On Thursday, 8 February 2018 at 00:24:22 UTC, Walter Bright wrote:
> On 2/7/2018 8:03 AM, Ralph Doncaster wrote:
>> As expected,
>> auto data = cast(ubyte[]) x"deadbeef";
>> works with -betterC, but
>> auto data = cast(ubyte[]) hexString!"deadbeef";
>> does not.
>> 
>
> When I tried it:
>
>   import std.conv;
>   void test() {
>     auto data = cast(ubyte[]) hexString!"deadbeef";
>   }
>
> with:
>
>   dmd -c -betterC test2.d
>
> it compiled without complaint. Are you doing something 
> different? (This is why posting complete examples, not 
> snippets, is better. That way I don't have to fill in the 
> blanks with guesswork.)

I didn't think it would be that hard to guess I'm trying to make 
an executable.

ralphdoncaster at gl1u:~/code/d$ dmd -betterC hex.d
hex.o: In function 
`_D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa':
hex.d:(.text._D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa[_D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa]+0x2e): undefined reference to `_D11TypeInfo_Aa6__initZ'
hex.d:(.text._D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa[_D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa]+0x33): undefined reference to `_d_arraysetlengthiT'
hex.d:(.text._D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa[_D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa]+0x7c): undefined reference to `_D3std5ascii10isHexDigitFNaNbNiNfwZb'
hex.d:(.text._D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa[_D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa]+0x160): undefined reference to `_D11TypeInfo_Aa6__initZ'
hex.d:(.text._D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa[_D3std4conv__T10hexStrImplTAyaZQrFNaNbNfMQoZAa]+0x165): undefined reference to `_d_arraysetlengthiT'
collect2: error: ld returned 1 exit status
Error: linker exited with status 1
ralphdoncaster at gl1u:~/code/d$ cat hex.d
import std.conv;

extern (C) int main() {
     //auto data = cast(ubyte[]) x"deadbeef";
     auto data = cast(ubyte[]) hexString!"deadbeef";
     return cast(int) data[0];
}

While the string hex literal version works fine:
ralphdoncaster at gl1u:~/code/d$ dmd -betterC hex.d
ralphdoncaster at gl1u:~/code/d$ ./hex
ralphdoncaster at gl1u:~/code/d$ echo $?
222
ralphdoncaster at gl1u:~/code/d$ cat hex.d
//import std.conv;

extern (C) int main() {
     auto data = cast(ubyte[]) x"deadbeef";
     //auto data = cast(ubyte[]) hexString!"deadbeef";
     return cast(int) data[0];
}



More information about the Digitalmars-d mailing list