Lavorando con un framework di test unitario, mi sono imbattuto in una situazione in cui mi piacerebbe testare argomenti macro. Detto semplicemente, mi piacerebbe espandere la macro FOO(x)
in modo che FOO(int)
sia short
e FOO(anything_else)
sia long
.Posso sostituire condizionatamente gli argomenti del preprocessore?
Con i modelli C++, ovviamente questo non è un problema. Ma qui ho bisogno di una vera sostituzione di token, non solo di uno typedef
. Cioè FOO(char) FOO(char) i;
dovrebbe essere una definizione valida uguale a long long i;
.
Il nuovo standard C ha funzionalità in cui il testo di sostituzione di una macro può dipendere dal tipo di espressione del primo argomento. Potresti usarlo come un blocco di base. –
Hai dato un'occhiata a boost.pp e se puoi hackerare qualcosa insieme a questo? – PlasmaHH
@StefanMajewsky: Ti riferisci a Generics, credo? – dirkgently