Boo
./1
geogeo - 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.
avatar la 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.
./2
Sasume - Posté le 22/03/2010 à 20:16 Membre depuis le 28/08/2003, 8213 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. »
./3
geogeo - Posté le 22/03/2010 à 20:24 Membre depuis le 06/02/2003, 7215 messages
Malheuruesement ça ne fonctionne pas. #pleure#
Toujours le même résultat: OS_FUNC(mafonction) -> mafonction_OS_VERSION
avatar la 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.
./4
geogeo - 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]
avatar la 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.
./5
squalyl - Posté le 22/03/2010 à 21:26 Membre depuis le 16/06/2001, 59730 messages
jamais compris pourquoi ça marchait pas avec la méthode de Geogeo d'ailleurs.
./6
Sasume - Posté le 22/03/2010 à 22:22 Membre depuis le 28/08/2003, 8213 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. »
./7
squalyl - Posté le 22/03/2010 à 23:18 Membre depuis le 16/06/2001, 59730 messages
au moins c'est clair grin

merci smile