Can I output strings using core.stdc.stdio?

Godnyx rempas at tutanota.com
Wed Dec 23 09:06:02 UTC 2020


On Wednesday, 23 December 2020 at 08:50:50 UTC, Mike Parker wrote:
> On Wednesday, 23 December 2020 at 08:45:15 UTC, Godnyx wrote:
>
>> Yep and I find it out! It won't work with templates and/or 
>> variadic function parameters. It says that the variable can't 
>> be read at compile time (so I can't cast it) or it will work 
>> but it will give me a segmentation fault (lol hello C). Any 
>> idea why this is happening in those cases?
>
> Please show the code that's causing the error. Without it, all 
> anyone can do is keep making suggestions that *might* be the 
> problem. With the code, someone can point to it exactly.

Yep that's the best thing I can do! Code:

import core.stdc.stdio : printf;
import std.string : toStringz;

void put(A...)(string prompt, A args) {
     for (ulong i = 0; i < args.length; i++) {
         if (typeof(args[i]).stringof == "string")
             printf("%s\n", args[i].toStringz);
     }
}

void main() {
     string h = "World!";
     string w = "World!";
     put(h, w);
}

I'm getting two errors. First that i can't be read at compile 
time and second that I don't initialize the function right. So I 
know I'm doing something wrong but I don't know why... Any ideas?


More information about the Digitalmars-d-learn mailing list