I'm trying to implement "printf" and I'm getting an error. The smallest possible code to demonstrate the error is:
import core.stdc.stdio;
void print(T...)(string prompt, T args) {
// Suppose all 'args' are of type "string" for this example
ulong carg = 0;
for (ulong i = 0; i < args[carg].length; i++) {
putc(args[carg][i], stdout);
}
}
void main() {
print("Prompt (ignored)", "Hello", " world!\n");
}
The error output I'm getting is:
test.d(6): Error: variable `carg` cannot be read at compile time
test.d(7): Error: variable `carg` cannot be read at compile time
test.d(12): Error: template instance `test.print!(string, string)` error instantiating
There is another error in my original code. Let's see the following line:
u64 str_len = strlen(args[carg]); //u64 = ulong
Now this should also give me the error that the variable "carg" cannot be read at compile time (which it probably does as it gives me an error when trying to use "str_len" inside a "for loop") but instead it gives me the following error:
Error: function `core.stdc.string.strlen(scope const(char*) s)` is not callable using argument types `(string)`
cannot pass argument `_param_1` of type `string` to parameter `scope const(char*) s`
Any ideas?