Конкретный, который вы ищете, называется __func__
, но это не совсем макрос, поскольку его значение меняется в зависимости от того, где он виден. Это полезно, однако, и похоже на макрос.
Мой любимый макрос на данный момент - __STDC_VERSION__
, потому что он позволяет мне делать это:
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L
# define inline
# define register
# if __GNUC__ >= 2 || _MSC_VER >= 1300
# define __func__ __FUNCTION__
# else
# define __func__ "<unknown>"
# endif
#endif
Теперь вы можете использовать ключевые слова C99 inline
, register
и __func__
, чтобы объявлять вещи, не беспокоясь о том, поддерживает ли используемый вами компилятор эту функциональность C99! В действительности, бит для inline
является более сложным, поскольку некоторые компиляторы определяют __inline
и другие подобные глупости, но вы получите общее представление.
Кроме того, полезный список предопределенных макросов для идентификации компиляторов, операционных систем и архитектур можно найти здесь .