Je vais avoir une macro comme ça (pas exactement, mais la fonction est tout à fait équivalent):différences dans l'opérateur Macro ## de concaténation entre Visual C++ et gcc
#define STRUCTMEMBER(Member,Value) GlobalStructInstance. ## Member = Value
...
STRUCTMEMBER(Item,1);
Cela fonctionne parfaitement dans Visual C++, mais gcc 3.4.5 (MingGW) donné l'erreur suivante:
pasting "." and "Item" does not give a valid preprocessing token
Cela se produit également lorsque j'utilise l'opérateur "->". Je n'ai pas trouvé d'indices sur la concaténation, que l'utilisation de ces opérateurs est interdite.
Est-ce que quelqu'un a une idée?
http://gcc.gnu.org/ml/gcc-help/2003-04/msg00213.html tout usage? – AakashM
Les espaces intentionnels? – EFraim
Eh bien, j'ai lu les docs gcc et donc ils ont expliqué le ## en supprimant tous les espaces, donc je les ai juste mis pour la lisibilité. Ma première version n'avait pas d'espaces ... –