Cómo evaluar una macro de preprocesador anidada

digamos que quiero seleccionar el comportamiento de una determinada directiva de preprocesador que evalúa en el momento de la compilación la concatenación de una cadena constante y el resultado de otra macro.

#define CASE1 text1
#define CASE2 text2
#define CASE3 text3
#define SCENARIO 3
/** the following won't work - for examplification purposes only**/
#define FUNCTION CASE##SCENARIO

/** whenever I write FUNCTION, I expect to see text3 **/

Me cuesta mucho pensar en una solución viable, ya que el preprocesador es una bestia de un solo paso. ¿Es eso incluso factible?

Respuestas a la pregunta(1)

Su respuesta a la pregunta