www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - fromStringz problem with gdc

reply "chardetm" <chardet gmail.com> writes:
Hello everyone,

I have a problem with the fromStringz function 
(std.string.fromStringz) when I try to compile with the GDC 
compiler (it works fine with DMD).

Here is a minimal code to see the error:


import std.stdio, std.string, std.c.stdlib;

int main () {
     char* s;
     s = cast(char*) malloc(2);
     s[0] = 'a';
     s[1] = '\0';
     writeln(fromStringz(s));
     return 0;
}


Compiling with DMD (works fine):
$ dmd testfsz.d

Compiling with GDC:
$ gdc testfsz.d -o testfsz
testfsz.d:8: error: undefined identifier fromStringz

It does the same thing on a friend's computer. I'm using GCC 
4.9.1 on Kubuntu 14.10.
Any idea where this comes from? Thanks in advance for your help!
Apr 06 2015
parent reply "Iain Buclaw" <ibuclaw gdcproject.org> writes:
On Monday, 6 April 2015 at 17:47:27 UTC, chardetm wrote:
 Hello everyone,

 I have a problem with the fromStringz function 
 (std.string.fromStringz) when I try to compile with the GDC 
 compiler (it works fine with DMD).

 Here is a minimal code to see the error:


 import std.stdio, std.string, std.c.stdlib;

 int main () {
     char* s;
     s = cast(char*) malloc(2);
     s[0] = 'a';
     s[1] = '\0';
     writeln(fromStringz(s));
     return 0;
 }


 Compiling with DMD (works fine):
 $ dmd testfsz.d

 Compiling with GDC:
 $ gdc testfsz.d -o testfsz
 testfsz.d:8: error: undefined identifier fromStringz

 It does the same thing on a friend's computer. I'm using GCC 
 4.9.1 on Kubuntu 14.10.
 Any idea where this comes from? Thanks in advance for your help!
fromStringz (in std.string) was introduced in D 2.066, gdc-4.9 was shipped when 2.065 was released. Iain.
Apr 06 2015
parent reply "chardetm" <chardet gmail.com> writes:
On Monday, 6 April 2015 at 17:55:42 UTC, Iain Buclaw wrote:
 On Monday, 6 April 2015 at 17:47:27 UTC, chardetm wrote:
 Hello everyone,

 I have a problem with the fromStringz function 
 (std.string.fromStringz) when I try to compile with the GDC 
 compiler (it works fine with DMD).

 Here is a minimal code to see the error:


 import std.stdio, std.string, std.c.stdlib;

 int main () {
    char* s;
    s = cast(char*) malloc(2);
    s[0] = 'a';
    s[1] = '\0';
    writeln(fromStringz(s));
    return 0;
 }


 Compiling with DMD (works fine):
 $ dmd testfsz.d

 Compiling with GDC:
 $ gdc testfsz.d -o testfsz
 testfsz.d:8: error: undefined identifier fromStringz

 It does the same thing on a friend's computer. I'm using GCC 
 4.9.1 on Kubuntu 14.10.
 Any idea where this comes from? Thanks in advance for your 
 help!
fromStringz (in std.string) was introduced in D 2.066, gdc-4.9 was shipped when 2.065 was released. Iain.
Thanks! I will make my own version and use conditional compilation to import it or not in that case...
Apr 06 2015
parent "bachmeier" <no spam.com> writes:
On Monday, 6 April 2015 at 18:31:13 UTC, chardetm wrote:
 On Monday, 6 April 2015 at 17:55:42 UTC, Iain Buclaw wrote:
 On Monday, 6 April 2015 at 17:47:27 UTC, chardetm wrote:
 Hello everyone,

 I have a problem with the fromStringz function 
 (std.string.fromStringz) when I try to compile with the GDC 
 compiler (it works fine with DMD).

 Here is a minimal code to see the error:


 import std.stdio, std.string, std.c.stdlib;

 int main () {
   char* s;
   s = cast(char*) malloc(2);
   s[0] = 'a';
   s[1] = '\0';
   writeln(fromStringz(s));
   return 0;
 }


 Compiling with DMD (works fine):
 $ dmd testfsz.d

 Compiling with GDC:
 $ gdc testfsz.d -o testfsz
 testfsz.d:8: error: undefined identifier fromStringz

 It does the same thing on a friend's computer. I'm using GCC 
 4.9.1 on Kubuntu 14.10.
 Any idea where this comes from? Thanks in advance for your 
 help!
fromStringz (in std.string) was introduced in D 2.066, gdc-4.9 was shipped when 2.065 was released. Iain.
Thanks! I will make my own version and use conditional compilation to import it or not in that case...
Looks like the function itself is very short: inout(char)[] fromStringz(inout(char)* cString) system pure { import core.stdc.string : strlen; return cString ? cString[0 .. strlen(cString)] : null; }
Apr 06 2015