Я пытаюсь написать макрос отладки в общем подмножестве C и C++. Это то, что я придумал до сих пор:Расширение переменной строки в отладочном макросе
#define OUTPUT_ERROR(...) printf("%s(%d) : %s() : %s\n", __FILE__, __LINE__, __func__, #__VA_ARGS__)
К сожалению, я не могу понять, как дать ему переменные для вывода. Есть ли способ принудительно расширить переменную во время выполнения? Например:
OUTPUT_ERROR("%s was broken", my_var);
или просто на месте
OUTPUT_ERROR(my_var + "some text");
избежать обучения точка с запятой в вашем макроопределение. –
'printf' не рекурсивно форматирует строки – StoryTeller
Макросы и' printf' имеют тенденцию быть очень C-ориентированными и меньше C++. Попробуйте воздержаться от добавления языковых тегов, которые вы фактически не используете. Если вы программируете на C, не добавляйте C++, даже если решение или код можно использовать в C++. –