Besides __LINE__
and __FILE__
, are there other useful pre-defined macros, like __FUNCTION_NAME__
?
If not, but you know of other cool/useful defined macros (especially for debugging purposes), I'd love to hear about them.
Some have asked about platform: I'm using gcc/g++ on MacOSX.
I can find the following (descriptions from C99 draft, but they are available in C89 too I think):
__DATE__
: The date of translation of the preprocessing translation unit: a character
string literal of the form "Mmm dd yyyy", where the names of the
months are the same as those generated by the asctime
function, and the
first character of dd is a space character if the value is less than 10. If the
date of translation is not available, an implementation-defined valid date
shall be supplied.__TIME__
: The time of translation of the preprocessing translation unit: a character
string literal of the form "hh:mm:ss" as in the time generated by the
asctime
function. If the time of translation is not available, an
implementation-defined valid time shall be supplied.For the current function name, C99 defines __func__
, but __FUNCTION_NAME__
is not a standard macro. In addition, __func__
is not a macro, it's a reserved identifier (6.4.2.2p1):
The identifier
__func__
shall be implicitly declared by the translator as if, immediately following the opening brace of each function definition, the declaration
static const char __func__[] = "
function-name";
appeared, where function-name is the name of the lexically-enclosing function.
If you're looking for something that's platform-specific: here's a list of gcc's common predefined macros. I like __COUNTER__
, which is a unique, sequential integer starting at 0. I think __INCLUDE_LEVEL__
is cool too, but not sure if I can think of a use for it yet :-).
Common GCC macros.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With