2009-12-09 10 views
1

En préprocesseur, nous pouvons avoir basculer entre les macros comme,noms de variables en C

#define BUFF(n) BUFF_##n 

Ainsi, Buff (1) obtiendraient remplacé par BUFF_1, Buff (2) serait obtenir remplacé par BUFF_2 et de la chanson

Est-ce que cela peut s'appliquer aux variables C? c'est-à-dire, choisir entre des variables similaires dynamiquement. Je comprends que c'est une situation étrange et peut être manipulé en utilisant des tableaux ou d'autres constructions .. mais la situation me demande une telle situation .. pourrait vous plz aider avec cela .. merci d'avance

+2

Pourquoi ne pas utiliser des tableaux? –

+1

Yeap, tu ferais mieux d'expliquer le problème original. Très probablement, C a une meilleure solution pour cela. – sharptooth

Répondre

4

Oui, vous pouvez utiliser cette macro pour appliquer BUFF_ à n'importe quoi. Le préprocesseur développera les macros, puis le compilateur essaiera de compiler le résultat. Ce dernier peut échouer, car si vous utilisez BUFF(+) vous obtenez BUFF_+ et ce n'est pas un nom de variable valide.

+0

Très pratique pour les sous-programmes aussi. Je ne me souviens pas des détails mais je suis à peu près sûr que dans ma vie passée, nous avons eu une application réelle de cette construction, bien que pour être honnête, certaines de nos pratiques de codage étaient un peu exagérées ... –

3

Bien sûr, vous pouvez le faire. Les macros du préprocesseur ne sont que des remplacements de texte effectués sur le code avant la compilation. Vous ne pouvez pas faire cela pendant l'exécution, cependant.