Я хотел бы напечатать макрос со значением времени выполнения внутри. Возможно ли это, и если да, то как?
#include<iostream>
#define DOSOMETHING(value) 5 * value + 6;
#define STRINGIFY(macro, arg1) std::cout << macro( << arg1<< );
int main(int argc, char** argv)
{
STRINGIFY(DOSOMETHING, argc)
return 0;
}
Это должно вывести «5 * (значение argc) + 6», так что если argc равно 0, то выведите «5 * 0 + 6»
Как это можно сделать?
Код, который требуется после расширения макроса:
int main(int argc, char** argv)
{
std::cout << "5 * " << argc << " + 6";
return 0;
}
Смысл в том, чтобы разрешить создание генератора кода на c ++ без необходимости генерации всего кода в строках, что отключает подсветку синтаксиса и делает его очень трудным для тестирования.