J'écris un tas de macros de préprocesseur liées, dont l'une génère des étiquettes sur lesquelles l'autre saute. Je les utilise de cette façon:Comment puis-je générer des valeurs uniques dans le préprocesseur C?
MAKE_FUNNY_JUMPING_LOOP(
MAKE_LABEL();
MAKE_LABEL();
)
je besoin d'un moyen de générer des étiquettes uniques, un pour chaque appel MAKE_LABEL
intérieure, avec le préprocesseur. J'ai essayé d'utiliser __LINE__
, mais depuis que j'appelle MAKE_LABEL
à l'intérieur d'une autre macro, ils ont tous la même ligne et les étiquettes entrent en collision.
Ce que je voudrais que cela est étendre à quelque chose comme:
MAKE_FUNNY_JUMPING_LOOP(
my_cool_label_1: // from first inner macro
...
my_cool_label_2: // from second inner macro
...
)
Y at-il un moyen de générer hash ou entiers auto-incrémenter avec le préprocesseur?
Quel compilateur utilisez-vous? –
J'utilise ICC (le prototype STM 3.0, basé sur la v11, je pense). –
Pour C++: http://stackoverflow.com/questions/9949532/generate-unique-numbers-at-compile-time?lq=1 –