Especialização de macro de pré-processador C baseada em um argumento

É possível ter uma macro expandida de forma diferente para um valor de argumento específico e diferente para todos os outros argumentos?

Digamos que eu defino um usuário atual:

#define CURRENT_USER john_smith

O que eu quero ser capaz de fazer é ter uma macro que seráexpandido diferentemente se o usuário passasse os jogosCURRENT_USER. Lembre-se de que não conheço todos os usuários possíveis a priori. O caso mais básico:

#define IS_CURRENT_USER(user)                   \
    /* this is not valid preprocessor macro */  \
    #if user == CURRENT_USER                    \
        1                                       \
    #else                                       \
        0                                       \
    #endif                                      

Com uma macro como essa, qualquer outra macro que contasse com o nome de usuário poderia ser feita da seguinte maneira:

#define SOME_USER_SPECIFIC_MACRO(user) SOME_USER_SPECIFIC_MACRO_SWITCH_1(IS_CURRENT_USER(user))

#define SOME_USER_SPECIFIC_MACRO_SWITCH_1(switch)   SOME_USER_SPECIFIC_MACRO_SWITCH_2(switch) // expand switch ...
#define SOME_USER_SPECIFIC_MACRO_SWITCH_2(switch)   SOME_USER_SPECIFIC_MACRO_##switch         // ... and select specific case

#define SOME_USER_SPECIFIC_MACRO_0  ... // not current user
#define SOME_USER_SPECIFIC_MACRO_1  ... // current user

Isso é possível?

EDIT: Deixe-me esclarecer. Diga que cada programador define diferentesCURRENT_USER no seu cabeçalho de configuração. Eu quero macros específicas do usuário para exala algo significativo se e somente se o seuuser jogos de argumentoCURRENT_USER. Como eu gostaria que essas macros contivessem_pragmas não pode ser verificação de tempo de execução (como proposto em algumas respostas abaixo).

EDIT: Novamente, esclarecimento. Digamos que haja macro para desativar a otimização de algumas seções do código:

#define TURN_OPTIMISATION_OFF __pragma optimize("", off)

Alguns programadores querem desativar a otimização para diferentes seções de código, mas não todas ao mesmo tempo. O que eu gostaria é ter uma macro:

#define TURN_OPTIMISATION_OFF(user) /* magic */

Isso corresponderáuser argumento contraCURRENT_USER macro, extraída do arquivo de configuração por programador. Se o usuário corresponder à macro, ela será expandida para o pragma. Se não, para nada.

questionAnswers(7)

yourAnswerToTheQuestion