need help to translate C into D
test123
test123 at gmail.com
Tue Sep 13 10:45:03 UTC 2022
On Tuesday, 13 September 2022 at 09:57:38 UTC, Dennis wrote:
> On Tuesday, 13 September 2022 at 09:43:46 UTC, test123 wrote:
>> This will not work since the C have no array like D.
>
> You can use a 0-size static array:
> ```D
> struct mystruct {
> uint32_t mask_limit; // Limit enum value that can be tested
> with mask.
> uint32_t value_count; // Number of values after the bitfield.
> uint32_t[0] data; // Bitmask + enumerated values follow.
> }
> ```
>
> Then you have to index with `mystructVar.data.ptr[i]` to avoid
> bounds checking.
Thanks, this look nice.
What I need is init the const object at CTFE.
I try this way:
```d
struct validate_KnownRegex_enum_init_type { const
upb_MiniTable_Enum header; uint[2] data; }
__gshared const validate_KnownRegex_enum_init_type
validate_KnownRegex_enum_init = { {64, 2}, [7, 0] };
```
The problem is I can not assign it into one array (give error):
```d
__gshared const test = cast(upb_MiniTable_Enum*)
&validate_KnownRegex_enum_init;
__gshared const __enums_layout = [
test,
];
```
This will also not work:
```d
__gshared const upb_MiniTable_Enum*[1] __enums_layout = [
&validate_KnownRegex_enum_init.header,
];
```
Is there a way to init the __gshared fixed length
upb_MiniTable_Enum array ?
More information about the Digitalmars-d-learn
mailing list