ImportC now supports function-like macros

ryuukk_ ryuukk.dev at gmail.com
Fri Mar 1 11:16:56 UTC 2024


On Friday, 1 March 2024 at 09:52:34 UTC, Dakota wrote:
> On Thursday, 29 February 2024 at 19:25:05 UTC, Walter Bright 
> wrote:
>> On 2/29/2024 11:22 AM, Walter Bright wrote:
>>> On 2/27/2024 9:26 PM, Dakota wrote:
>>>> It is not impractical to add so much `cast(Message*)` into D 
>>>> code.
>>> 
>>> Hmm, interesting approach!
>>> 
>>
>> I'm wondering if you could try adding this:
>>
>>     #define const
>>
>> and see how far that goes!
>
> On Thursday, 29 February 2024 at 19:25:05 UTC, Walter Bright 
> wrote:
>> On 2/29/2024 11:22 AM, Walter Bright wrote:
>>> On 2/27/2024 9:26 PM, Dakota wrote:
>>>> It is not impractical to add so much `cast(Message*)` into D 
>>>> code.
>>> 
>>> Hmm, interesting approach!
>>> 
>>
>> I'm wondering if you could try adding this:
>>
>>     #define const
>>
>> and see how far that goes!
>
> This cloud work but I don't want go this way. (loss const prone 
> to errors in my d code, because there is a lot `property` read 
> should return const, and the returned const need pass into 
> other function chain. remove const is not a solution)
>
>
> I suggestion add a dmd flags to change the behavior, like 
> --importC-const-pointer=. so the user can choice what kind 
> behavior they want.
>
> some project use transitive const in C, so they can work with 
> this new options.
>
> One more options is translate it into a user-defined template, 
> this is more flexible. user can return diff result base on the 
> name. for example:
>
> ```c
> typedef struct Message Message;
> int tryEncode(const Message* msg);
> ```
> =>
>
> ```sh
> struct Message;
> int tryEncode(importConstPointer!(Message)* msg);
> ```

Unnecessary template

Perhaps it should be marked `inout`?


More information about the Digitalmars-d mailing list