Примерно так близко, как вы получите, является одним из следующих:
int functionA()
{
#if RAND
/* stuff that happens only when RAND is defined */
#endif
/* stuff that happens whether RAND is defined or not */
}
Или, может быть, это:
#if RAND
#define FUNCA() functionA_priv()
#else
#define FUNCA() functionA()
#endif
int FUNCA()
{
/* the non-RAND version of functionA().
* It's called functionA_priv() when RAND is defined, or
* functionA() if it isn't */
}
#if RAND
int functionA()
{
/* The RAND version of functionA(). Only defined if RAND
* is defined, and calls the other version of functionA()
* using the name functionA_priv() via the FUNCA() macro */
FUNCA();
}
#endif
Использование макроса FUNCA()
во второйversion позволяет обычной версии functionA()
рекурсивно вызывать себя, используя макрос FUNCA()
вместо functionA()
, если необходимо, поскольку FUNCA()
предоставит правильный идентификатор независимо от того, какое имя используется для функции.