digitalmars.D.learn - can I alias something to void?
- torhu (10/10) Jan 17 2007 I'm translating some C headers.
- torhu (4/19) Jan 17 2007 Eh...seems the compiler doesn't accept 'AL_CONST char *' after all.
- Mike Parker (8/29) Jan 17 2007 You don't need it. Just drop the 'const' altogether:
- Stewart Gordon (10/21) Jan 17 2007 Not as such, because D by design has a context-free grammar. Defining
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.
Jan 17 2007
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.
Jan 17 2007
torhu wrote:torhu wrote: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);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.
Jan 17 2007
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.
Jan 17 2007