Unexpected result with -betterC

monkyyy crazymonkyyy at gmail.com
Sun Nov 3 19:47:31 UTC 2024


On Sunday, 3 November 2024 at 19:00:33 UTC, DLearner wrote:
> The two fragments below compiled and ran as expected using dmd 
> -betterC under Windows.
>
> ```
>    string Scrn = "OPO NAM='DspVar1' POS='1,1' 
> VAR=('IntVar1','I');E";
>
>
>    printf("\nWR_Createtest entered.\n");
>
>
>    OpStructFstPtr = WR_CreateFormatFile(Scrn);
>
> ```
>
> ```
> OpStruct* WR_CreateFormatFile(string parm_Format) {
>
>    import core.stdc.stdio: printf;
>    import core.stdc.stdlib: malloc;
>
>
>    OpStruct* FstOpStructPtr;
>
>
>    if (parm_Format[0..3] == "OPO"[0..3]) {
>       printf("OPO Found.\n");
>    } else {
>       printf("OPO NOT Found.\n");
>    }
>
>    if (parm_Format[$-1..$] == "E"[0..1]) {
>       printf("E Found.\n");
>    } else {
>       printf("E NOT Found.\n");
>    }
>
> ```
>
> However, the docs say dynamic arrays are not allowed with 
> betterC, and 'string' implies a dynamic array.
> So I expected DMD to complain that my code was invalid.
>
> Any ideas?

Id expect this to fail, but nothing I see in yours

```d
string foo="foo";
foo~="bar";
```

[]'s are both slices and dynamic arrays depending on use, theres 
a debate about that decision(im of the opinion a `[?]` should be 
a dynamic array and clean up the api), but the current situation 
will only break on appends


More information about the Digitalmars-d-learn mailing list