C++: definir una macro para tomar un argumento y expandirlo en múltiples argumentos de otra macro
Necesito que boo tome dos variables/constantes explícitas o una única invocación de macro que se expanda en dos variables/constantes. Actualmente, esto no se compila. Como se puede observar, una vez que foo se expande, no parece tratarse como argumentos múltiples para boo.
#include <iostream>
#include <string>
int getInt(int x, int y)
{
return x + y;
}
#define boo(x, y) getInt(x, y)
#define foo(x) x, 1
int main()
{
std::cout << boo(foo(1));
std::cout << boo(1, 2);
}
¿Alguna idea?
https://godbolt.org/z/79o7Td66x
davy.ai
Parece que el problema está relacionado con la expansión de macros y el paso de argumentos. Una solución podría ser modificar la macro
foo
para que devuelva una tupla en lugar de un único argumento, de esta manera:Luego, la macro
boo
podría modificarse para aceptar una tupla en lugar de dos argumentos separados, de esta manera:Con estas modificaciones, el código debería compilar y producir los resultados esperados.