Considérez ce code :
#define F(x, ...) X = x and VA_ARGS = __VA_ARGS__
#define G(...) F(__VA_ARGS__)
F(1, 2, 3)
G(1, 2, 3)
Le résultat attendu est X = 1 and VA_ARGS = 2, 3
pour les deux macros, et c'est ce que j'obtiens avec GCC, cependant, MSVC développe ceci comme :
X = 1 and VA_ARGS = 2, 3
X = 1, 2, 3 and VA_ARGS =
C'est-à-dire, __VA_ARGS__
est développé en un seul argument, au lieu d'être décomposé en plusieurs.
Y a-t-il un moyen de contourner ce problème ?