Re:The Preprocessor Iceberg Meme
by zabzonk on Thursday July 14, 2022 @08:35AM
(#32095206)
I started but couldn't finish. For example __FILE__ (and __LINE__ and similar) certainly can be used in user-written macros, but they evaluate to the file/line they appear at in the macro source, not at the line the macro is invoked.
[ Parent
| on HN ]
This is not correct. They evaluate at the point where they are expanded.
I’ve used them countless of times to implement “log” and “trace” macros that show file/line.
I have used them countless timers myself, but not within another macro
Edit: Sorry I am on multiple drugs at the moment for a severe fracture - I'm a bit confused, nurse has just been. I will shut up now.
To prove I am not completely out of it (though wrong), here's one I wrote a lot earlier: https://latedev.wordpress.com/2012/08/09/c-debug-macros/
Sorry to hear that! Rest up and don’t worry about cpp macros for now ;) they’ll still be there after you heal. Good luck!
Honestly, I suspect that cpp macros will outlive us all
most commonly they are typically used in the definition of the assert macro. For example: https://github.com/lattera/glibc/blob/master/assert/assert.h .
> they evaluate to the file/line they appear at in the macro source, not at the line the macro is invoked.
What are you talking about? Maybe I'm missing your point, but:
#define A __LINE__
A
A
Expands to:
2
3