Thread overview
__FILE__ and __LINE__ 'forwarding'
Sep 22, 2006
Lionello Lunesu
Sep 22, 2006
Lutger
Sep 23, 2006
Juan Jose Comellas
September 22, 2006
#void test(int i=__LINE__) { printf("%i",i);}
#void main() {
#  test(); // prints 1
#}

It would be really handy if the __LINE__ default parameter value would be evaluated at the line containing the call. This way we can mimic those C logging macros.

Is there currently any way to do this without writing __LINE__, __FUNC__ on every call?

L.
September 22, 2006
Lionello Lunesu wrote:
> #void test(int i=__LINE__) { printf("%i",i);}
> #void main() {
> #  test(); // prints 1
> #}
> 
> It would be really handy if the __LINE__ default parameter value would be evaluated at the line containing the call. This way we can mimic those C logging macros.
> 
> Is there currently any way to do this without writing __LINE__, __FUNC__ on every call?
> 
> L.

Indeed, this would be nice if possible. For the function name, I think this can be done with Don Clugston's meta library, meta.nameof should do the trick:
"Given any D symbol (class, template, function, module name, or non-local variable) or any D type, convert it to a compile-time string literal, optionally containing the fully qualified and decorated name."
September 23, 2006
This feature would be great to have, especially when throwing Exceptions in debug mode. Ideally, this should work for __FILE__, __LINE__ and __FUNC__.


Lionello Lunesu wrote:

> #void test(int i=__LINE__) { printf("%i",i);}
> #void main() {
> #  test(); // prints 1
> #}
> 
> It would be really handy if the __LINE__ default parameter value would be evaluated at the line containing the call. This way we can mimic those C logging macros.
> 
> Is there currently any way to do this without writing __LINE__, __FUNC__ on every call?
> 
> L.