Thread overview | ||||||
---|---|---|---|---|---|---|
|
January 17, 2007 can I alias something to void? | ||||
---|---|---|---|---|
| ||||
I'm translating some C headers. #define AL_CONST const void set_window_title(AL_CONST char *name) { /* ... */ } I'm wondering if there is a legitimate way to turn AL_CONST into nothing in D. This compiles: alias void AL_CONST; void set_window_title(AL_CONST char *name) { /* ... */ } But I have no idea if that screws up the parameter type somehow, or if it's legal according to the D spec. Of course I could delete the AL_CONST's. But I'm just curious. |
January 17, 2007 Re: can I alias something to void? | ||||
---|---|---|---|---|
| ||||
Posted in reply to torhu | torhu wrote:
> I'm translating some C headers.
>
>
> #define AL_CONST const
>
> void set_window_title(AL_CONST char *name) { /* ... */ }
>
>
> I'm wondering if there is a legitimate way to turn AL_CONST into nothing in D. This compiles:
>
> alias void AL_CONST;
>
> void set_window_title(AL_CONST char *name) { /* ... */ }
>
Eh...seems the compiler doesn't accept 'AL_CONST char *' after all. Sorry about that.
I'm still interested in other ways of doing this, though.
|
January 17, 2007 Re: can I alias something to void? | ||||
---|---|---|---|---|
| ||||
Posted in reply to torhu | torhu wrote:
> torhu wrote:
>> I'm translating some C headers.
>>
>>
>> #define AL_CONST const
>>
>> void set_window_title(AL_CONST char *name) { /* ... */ }
>>
>>
>> I'm wondering if there is a legitimate way to turn AL_CONST into nothing in D. This compiles:
>>
>> alias void AL_CONST;
>>
>> void set_window_title(AL_CONST char *name) { /* ... */ }
>>
>
> Eh...seems the compiler doesn't accept 'AL_CONST char *' after all. Sorry about that.
>
> I'm still interested in other ways of doing this, though.
You don't need it. Just drop the 'const' altogether:
void set_window_title(char* name) { }
Of course, if this is a pure D port of a C program, you'd be better served with this form:
void set_window_title(char[] name) {}
And if it is a binding to a C library, this form:
extern(C) void set_window_title(char* name);
|
January 17, 2007 Re: can I alias something to void? | ||||
---|---|---|---|---|
| ||||
Posted in reply to torhu | torhu wrote: > I'm translating some C headers. > > #define AL_CONST const > > void set_window_title(AL_CONST char *name) { /* ... */ } > > I'm wondering if there is a legitimate way to turn AL_CONST into nothing in D. This compiles: Not as such, because D by design has a context-free grammar. Defining an identifier to resolve to textual nothingness would affect the parsing. > alias void AL_CONST; > > void set_window_title(AL_CONST char *name) { /* ... */ } <snip> Another tip: In D pointer declarations, the '*' is strictly associated with the type. So char* name is a preferred style to char *name Stewart. |
Copyright © 1999-2021 by the D Language Foundation