digitalmars.D.learn - macro help
- J Thomas (9/9) Jul 27 2005 hey im curious, are there any facilities in d for expanding macros
- Ben Hinkle (5/14) Jul 27 2005 You'd have to expand the macro by hand. In D __LINE__ and __FILE__ are
- J Thomas (3/29) Jul 27 2005 yah thats what i was thinking, bummer...
- Charles (6/35) Jul 27 2005 You can always run it through a C++ pre-proccessor before compilation.
- Manfred Nowak (5/7) Jul 27 2005 [...]
hey im curious, are there any facilities in d for expanding macros beyond a mixin? for example what if i want to pass the source location into a function, for example: in c/c++ i could write a method: _someMethod( int line, string source ); then macro: #define someMethod() _someMethod( _LINE_, _FILE_ ); etc.. how would you do something like this in D ?
Jul 27 2005
"J Thomas" <jtd514 ameritech.net> wrote in message news:dc7clf$26s3$1 digitaldaemon.com...hey im curious, are there any facilities in d for expanding macros beyond a mixin? for example what if i want to pass the source location into a function, for example: in c/c++ i could write a method: _someMethod( int line, string source ); then macro: #define someMethod() _someMethod( _LINE_, _FILE_ ); etc.. how would you do something like this in D ?You'd have to expand the macro by hand. In D __LINE__ and __FILE__ are substituted at the lexer level - so the rest of the parser never knows they exist.
Jul 27 2005
yah thats what i was thinking, bummer... i love D but im still not completely sold on the no preprocessor Ben Hinkle wrote:"J Thomas" <jtd514 ameritech.net> wrote in message news:dc7clf$26s3$1 digitaldaemon.com...hey im curious, are there any facilities in d for expanding macros beyond a mixin? for example what if i want to pass the source location into a function, for example: in c/c++ i could write a method: _someMethod( int line, string source ); then macro: #define someMethod() _someMethod( _LINE_, _FILE_ ); etc.. how would you do something like this in D ?You'd have to expand the macro by hand. In D __LINE__ and __FILE__ are substituted at the lexer level - so the rest of the parser never knows they exist.
Jul 27 2005
You can always run it through a C++ pre-proccessor before compilation. Charlie "J Thomas" <jtd514 ameritech.net> wrote in message news:dc8hvi$d5c$1 digitaldaemon.com...yah thats what i was thinking, bummer... i love D but im still not completely sold on the no preprocessor Ben Hinkle wrote:beyond"J Thomas" <jtd514 ameritech.net> wrote in message news:dc7clf$26s3$1 digitaldaemon.com...hey im curious, are there any facilities in d for expanding macrostheya mixin? for example what if i want to pass the source location into a function, for example: in c/c++ i could write a method: _someMethod( int line, string source ); then macro: #define someMethod() _someMethod( _LINE_, _FILE_ ); etc.. how would you do something like this in D ?You'd have to expand the macro by hand. In D __LINE__ and __FILE__ are substituted at the lexer level - so the rest of the parser never knowsexist.
Jul 27 2005
"Charles" <noone nowhere.com> wrote:You can always run it through a C++ pre-proccessor before compilation.[...] That is definitely not true, because pre-processor directives might be included in D-strings spanning several lines. -manfred
Jul 27 2005