On Thursday, 25 July 2019 at 12:01:40 UTC, Oleg B wrote:
Hello everyone!
I try build this code with betterC
import core.stdc.stdio;
import std.format : format;
extern(C) int main()
{
mixin(format!`enum str = "%s\0";`("hello"));
fprintf(stderr, "%s\n", str.ptr);
return 0;
}
but compilation fails
/dlang/dmd/linux/bin64/../../src/phobos/std/format.d(6278):
Error: Cannot use try-catch statements with -betterC
/dlang/dmd/linux/bin64/../../src/phobos/std/format.d(6308):
Error: template instance
`std.format.checkFormatException!("enum str = \"%s\\0\";",
string)` error instantiating
onlineapp.d(6): instantiated from here: format!("enum
str = \"%s\\0\";", string)
/dlang/dmd/linux/bin64/../../src/phobos/std/format.d(6311):
while evaluating: static assert(!e)
/dlang/dmd/linux/bin64/../../src/phobos/std/array.d(3204):
Error: TypeInfo cannot be used with -betterC
Is this a bug?
https://run.dlang.io/is/TG1uhg
If you read the documentation for betterC
(https://dlang.org/spec/betterc.html#consequences) you'll see
that there are features of the D language which are not
supported. Therefore, libraries that use such features (e.g.
std.format, std.array) are also not supported, and that is why
you are encountering such errors.
There are some features of Phobos which can be used in betterC
builds, but you're going to find that it's hit-and-miss.
Mike