El específico que está buscando se llama __func__
, pero no es exactamente un macro, ya que su significado cambia según dónde se vea. Sin embargo, es útil y se ve como una macro.
Mi macro favorito en este momento es __STDC_VERSION__
porque me permite hacer esto:
#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
Ahora puede utilizar las palabras clave C99 inline
, register
y __func__
para declarar las cosas sin tener que preocuparse acerca de si o no ¡el compilador que está utilizando soporta esa funcionalidad C99! En realidad, el bit para inline
es más complejo ya que algunos compiladores definen __inline
y otras tonterías similares, pero se entiende la idea general.
Además, se puede encontrar una lista útil de macros predefinidas para identificar compiladores, sistemas operativos y arquitecturas here.
Eso será específico de la plataforma. ¿En que plataforma Estas tu? – dirkgently
@dirkgently: '__LINE__' y' __FILE__' no son específicos de la plataforma. Y creo que hay algunas cosas más similares a las macros ('__FUNCTION_NAME__' no es una macro) que también son parte del estándar C y/o C++. – Omnifarious
@Omnifarious: Sí, soy consciente de esto. Dado que, él está buscando a otros, de ahí mi pregunta. – dirkgently