CTFE and BetterC compatibility
rikki cattermole
rikki at cattermole.co.nz
Wed Apr 27 14:34:27 UTC 2022
This works:
```d
struct Data
{
int[] digits;
}
int parseDigit(char c) pure
{
return c - '0';
}
Data parse(string str) pure
{
Data data;
if (__ctfe) {
size_t used;
data.digits.length = str.length;
while (str.length != 0)
{
// Skip spaces
while (str[0] == ' ')
str = str[1 .. $];
// Parse single digit integer
data.digits[used++] = parseDigit(str[0]);
// Consume digit
str = str[1 .. $];
}
data.digits = data.digits[0 .. used];
}
return data;
}
enum Data parsedData = parse("5 4 2 6 9");
extern(C) int main()
{
pragma(msg, "First digit=", parsedData.digits[0]);
return 0;
}
```
More information about the Digitalmars-d-learn
mailing list