consideran este código:MSVC no se expande __VA_ARGS__ correctamente
#define F(x, ...) X = x and VA_ARGS = __VA_ARGS__
#define G(...) F(__VA_ARGS__)
F(1, 2, 3)
G(1, 2, 3)
El resultado esperado es X = 1 and VA_ARGS = 2, 3
tanto para las macros, y eso es lo que estoy haciendo con GCC, sin embargo, MSVC expande esto como:
X = 1 and VA_ARGS = 2, 3
X = 1, 2, 3 and VA_ARGS =
Es decir, __VA_ARGS__
se expande como un único argumento, en lugar de desglosarse en varios.
¿Hay alguna forma de evitar esto?
Mi primer pensamiento sería obtener un mejor compilador. Si este es el primer error y el más serio que has encontrado en MSVC, te esperan MUCHAS sorpresas desagradables ... –
@R: No es una opción: P – uj2