Macro avec parametre variable - C++ - Programmation
Marsh Posté le 04-07-2007 à 15:30:36
J'en profite également pour poser une seconde question :
y a t il possibilité de générer des fichiers sources intermédiaires avec les macros expansés avec visual C++ 6.0 et gcc sous linux ?
Marsh Posté le 04-07-2007 à 15:32:07
presque. mais faut lire la doc pour y arriver.
Code :
|
par exemple
Marsh Posté le 04-07-2007 à 16:16:50
Pour ta 2ème question : gcc -E
Pour ta première question : http://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html
Marsh Posté le 04-07-2007 à 16:24:24
Merci à vous 2. Si je n'ai pas trouvé rapidement, c'est que j'ai d'abord cherché dans l'aide de visual studio (parceque je développe par défaut sous cet IDE), et forcément, cette fonctionnalité n'est pas implémentée dans la version que j'utilise (V 6.0). Je suis en train d'installer visual studio 2005 qui apparemment supporte __VA_ARGS__.
Marsh Posté le 05-07-2007 à 09:32:39
T'as appris le C en lisant le standard peut-être ? Sans compter que tout ce qui est ISO est payant.
Marsh Posté le 05-07-2007 à 10:14:53
alors 'oui en partie' et http://www.open-std.org/jtc1/sc22/wg14/ et http://www.open-std.org/jtc1/sc22/ [...] eV5.10.pdf c'est du poulet
Marsh Posté le 05-07-2007 à 12:29:50
C'est pas du poulet mais c'est pas non plus le standard. En plus franchement dans ton document, y'a quasiment que dalle sur __VA_ARGS__.
Marsh Posté le 12-07-2007 à 15:36:41
Je réup ce message , et je le change de catégorie (c->c++) , pour savoir s'il est possible d'utiliser les macros à arguments variables non plus avec un compilateur C, mais un compilateur C++.
le compilateur que j'utilise est g++ version 2.95.4 et j'ai l'impression qu'il est un peu trop vieux pour cette syntaxe
Marsh Posté le 12-07-2007 à 15:39:25
il est trop vieux tout court, mais même si ça ne support pas bien C99, bah RTFM, y a probablement une extension GNU pour faire ça.
Marsh Posté le 12-07-2007 à 16:44:47
bon, je suis deg, je ne peux pas faire ça :
Code :
|
Lorsque je compile le programme avec gcc v 2.95.4 (sous debian woody 3.0, et glibc 2.2) il me renvoie l'erreur suivante :
Code :
|
alors qu'avec gcc v 4.0.3 sous ubuntu (et visual 2005), ce code compile parfaitement bien.
Marsh Posté le 12-07-2007 à 19:05:27
ReplyMarsh Posté le 12-07-2007 à 23:21:39
Joel F a écrit : Faudrais voir à pas oublier les pour casser ta macro sur plusieurs lignes |
Ils y sont, c'est les balises code qui les ont viré
Marsh Posté le 13-07-2007 à 10:02:16
xilebo a écrit : Ils y sont, c'est les balises code qui les ont viré |
OK donc ... ^^
Ensuite
Citation :
|
Ensuite, je susi pas sur que le 2.95 supporte cette tambouille
Marsh Posté le 04-07-2007 à 15:17:45
Bonjour,
Je cherche à écrire une macro qui me permette de saisir un nombre variable de paramètre et j'obtiens quelque chose qui à priori fonctionne, mais ca ne me plait pas trop.
Voici le code de la macro:
La fonction Message :
Et du coup, je peux appeler ma macro par exemple de la facon suivante :
Avec la bidouille qui consiste à concaténer la fonction Message avec _Z, _Z étant égal à ("mon message %d %d",val1,val2) dans mon exemple, j'arrive à appeler une macro avec un nombre variable de paramètre, mais à condition d'avoir les parenthèses autour de "mon message %d %d",val1,val2. Sinon, je me prends un warning du compilateur qui me dit qu'il n'y a pas le bon nombre de paramètre (normal).
Du coup, quand on lit la syntaxe de la ligne, on pense qu'il y a une erreur et j'aimerais supprimer ce dernier problème, mais je ne vois pas comment faire (mes connaissances en préprocesseur sont limitées), alors peut-être certains ont une idée ou une astuce pour faire cela ?
Précision : il est important pour moi que Log soit une macro et non une fonction (avec une fonction je n'aurais pas ce problème), car je dois pouvoir retirer les lignes de log à la compilation selon si je suis en debug ou en release.
Merci d'avance
edit : fonction wysiwyg du forum qui deconne avec les balises code
Message édité par xilebo le 12-07-2007 à 15:38:11