1

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

#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

Malheuruesement ça ne fonctionne pas. mourn
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

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

jamais compris pourquoi ça marchait pas avec la méthode de Geogeo d'ailleurs.

6

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