Estoy estudiando un fragmento de código de las bibliotecas de GSL y me he quedado desconcertado con algunas líneas al principio de un archivo de encabezado. Entiendo lo que hacen #undef, #ifdef y etc., pero lo que no entiendo es ¿por qué básicamente restablecieron la definición de _BEGIN_DECLS y luego continuar y definirla de nuevo? Técnicamente, no debería haber definiciones previas, ¿verdad? Quiero decir, esas cosas son estáticas y no están sujetas a cambios. De todos modos, aquí está el extracto del código:Uso de #undef en C++
#undef __BEGIN_DECLS
#undef __END_DECLS
#ifdef __cplusplus
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS }
#else
# define __BEGIN_DECLS /* empty */
# define __END_DECLS /* empty */
#endif
¿Por qué el voto a favor? Me parece una pregunta razonable. –