Posté le 22/03/2010 à 19:52 Membre depuis le 06/02/2003, 7215 messages
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.
avatarla Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.
Posté le 22/03/2010 à 20:16 Membre depuis le 28/08/2003, 8205 messages
#define OS_VERSION 1.1.1
#define _OS_FUNC(f, v) f ## _ ## v
#define OS_FUNC(f) _OS_FUNC(f, OS_VERSION)
?
avatar« 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. »
Posté le 22/03/2010 à 20:24 Membre depuis le 06/02/2003, 7215 messages
Malheuruesement ça ne fonctionne pas. mourn
Toujours le même résultat: OS_FUNC(mafonction) -> mafonction_OS_VERSION
avatarla Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.
Posté le 22/03/2010 à 21:09 Membre depuis le 06/02/2003, 7215 messages
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]
avatarla Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.
Posté le 22/03/2010 à 21:26 Membre depuis le 16/06/2001, 68395 messages
jamais compris pourquoi ça marchait pas avec la méthode de Geogeo d'ailleurs.
Posté le 22/03/2010 à 22:22 Membre depuis le 28/08/2003, 8205 messages
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.
avatar« 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. »
Posté le 22/03/2010 à 23:18 Membre depuis le 16/06/2001, 68395 messages
au moins c'est clair grin

merci smile