digitalmars.D.learn - faking a C logging macro
- Tydr Schnubbis (2/2) Apr 20 2006 Can I get something like this in D, using mixins or whatever?
- BCS (22/25) Apr 20 2006 sed "/log\(/logprintf(__FILE__ `: ` __FUNCTION__ `: %s`, /" in.d -o out....
- clayasaurus (6/46) Apr 20 2006 According to the D change log @ version .116 this was included.
Can I get something like this in D, using mixins or whatever? #define log(s) logprintf(__FILE__ ": " __FUNCTION__ ": %s", s)
Apr 20 2006
Tydr Schnubbis wrote:Can I get something like this in D, using mixins or whatever? #define log(s) logprintf(__FILE__ ": " __FUNCTION__ ": %s", s)sed "/log\(/logprintf(__FILE__ `: ` __FUNCTION__ `: %s`, /" in.d -o out.d ??? No but seriously folks, I have wanted something like this a few times myself. Particularly, some way to get the __FILE__, etc. set of constants of the line where a template is instanced. Something like the following would be great. template log( char[] s, char[] fi = __FILE__, int li = __LINE__, char[] fn = __FUNCTION__) // const defaults come from called location { const char[] log = ... } main.d int i; void main() { pragma(msg, log!("this is broken!!!"); } compile time output: main.d:4 this is broken!!!
Apr 20 2006
According to the D change log version .116 this was included. "Added __FILE__, __LINE__, __DATE__, __TIME__, __TIMESTAMP__." Maybe ask Walter to add __FUNCTION__ ? You might want to check out build's preprocessor stuff as well. http://www.dsource.org/forums/viewtopic.php?t=624 BCS wrote:Tydr Schnubbis wrote:Can I get something like this in D, using mixins or whatever? #define log(s) logprintf(__FILE__ ": " __FUNCTION__ ": %s", s)sed "/log\(/logprintf(__FILE__ `: ` __FUNCTION__ `: %s`, /" in.d -o out.d ??? No but seriously folks, I have wanted something like this a few times myself. Particularly, some way to get the __FILE__, etc. set of constants of the line where a template is instanced. Something like the following would be great. template log( char[] s, char[] fi = __FILE__, int li = __LINE__, char[] fn = __FUNCTION__) // const defaults come from called location { const char[] log = ... } main.d int i; void main() { pragma(msg, log!("this is broken!!!"); } compile time output: main.d:4 this is broken!!!
Apr 20 2006