es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Defina una macro del preprocesador con comandos del preprocesador.

Estoy usando a menudo una sintaxis como

#ifdef __cplusplus
extern “C”
#endif
void myCFunc();

así que intenté hacer una macro para tener una sintaxis como

CFUNC(void myCFunc());

No estoy seguro si es algo que se pueda hacer (¿el preprocesador puede ejecutar su código recién generado?)

La idea fallida fue algo como


define CFUNC(ARGUMENT) \ #ifdef __cplusplus \ extern "C" \ #endif \ ARGUMENT;

¿Hay alguna manera de hacer una macro que genere código para el preprocesador?

Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible hacer una macro que genere código para el preprocesador. La macro que has escrito es un buen comienzo, pero necesita ser modificada ligeramente para que funcione. La macro modificada debería verse así:

    #define CFUNC(ARGUMENT) \
    #ifdef __cplusplus \
    extern "C" \
    #endif \
    ARGUMENT
    

    Ten en cuenta que el punto y coma al final de la macro ha sido eliminado. Esto se debe a que el punto y coma forma parte del argumento que se pasa a la macro, y no debe estar incluido en la macro misma.

Comments are closed.