On Thursday, 6 April 2023 at 00:46:26 UTC, Josh Holtrop wrote:
```
constarrptr.d(5): Error: cannot use non-constant CTFE pointer
in an initializer `cast(immutable(ubyte)*)data`
```
Why? And how can I do the equivalent to what I have been doing
in C? I want these pointers to be generated at compile time,
not initialized at runtime.
(the full project is generating this file containing the data
array (which is much longer) and multiple pointer constants to
locations within it)
You have 2 options: First, to use .ptr, or second, to do the
initialization in static this:
```d
import std.stdio;
static const char[] d;
static const char * p;
static this() {
d = [97, 98, 99];
p = &d[0]; // == d.ptr;
}
void main()
{
printf("%.*s\n", cast(int)d.length, d.ptr);
writeln("*p = ", *p);
}/* Prints:
abc
*p = a
*/
```
SDB@79