Malgré mes tentatives je n'arrives pas à concaténer 2 macros en C.
Voilà ce que je cherche à faire:
#define OS_VERSION 1.1.1
#define OS_FUNC(f) f##_##OS_VERSION
Je voudrais obtenir ceci:
OS_FUNC(mafonction) -> mafonction_1.1.1
Mais gcc me renvoie:
OS_FUNC(mafonction) -> mafonction_OS_VERSION
Si vous avez une idée n'hésitez pas.
#define OS_VERSION 1.1.1
#define _OS_FUNC(f, v) f ## _ ## v
#define OS_FUNC(f) _OS_FUNC(f, OS_VERSION)
?

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
J'ai trouvé. Merci Sasume.
[code]
#define OS_VERSION 1.1.1
#define __OS_FUNC(f, v) f ## _ ## v
#define _OS_FUNC(f, v) __OS_FUNC(f, v)
#define OS_FUNC(f) _OS_FUNC(f, OS_VERSION)
[/code]
jamais compris pourquoi ça marchait pas avec la méthode de Geogeo d'ailleurs.
Dans une définition de macro, un token avant ou après # ou ## n’est pas substitué.
D’ou l’appel intermédiaire pour que la substitution ait lieu.

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »