Написание грамотной функции отладки - C (СИ)
Формулировка задачи:
Привет, возник вопрос с организацией отладки с помощью printf'ов, есть консольное приложение которое когда запускается с аргументом /d должно переходить в режим отладки и печатать промежуточные величины.
Отладка включена тогда в структуре flags параметр debug = TRUE,
на данный момент есть следующий вариант
printf'ы бывают с аргументами как в примере выше так и без
расскажите как вы делаете отладочный консольный вывод в своих программах, а то я уверен что можно написать свою функцию debug(flags, "Text_to_output", parameter1, parameter2, ...), тогда получится функция с переменным числом аргументов, так вот вопрос стоит ли написание дополнительных но зато универсальных велосипедов? Насколько увеличится время выполнения.
Спасибо за помощь!
if(flags.debug){
printf("something");
}printf("%d %d %s", 15, 12, string);Решение задачи: «Написание грамотной функции отладки»
textual
Листинг программы
int Log(int flags, const char* fmt, ...);
Объяснение кода листинга программы
- В коде представлена функция с именем
Log, которая принимает два аргумента:flagsиfmt. flags- это целочисленный аргумент, который представляет собой набор флагов для управления поведением функции.fmt- это строковый аргумент, который содержит шаблон для форматирования вывода.- Функция
Logиспользует стандартную библиотеку для форматирования строк и вывода их в консоль. - В функции
Logприсутствует переменнаяbuffer, которая используется для хранения отформатированной строки. - В функции
Logприсутствует цикл, который проходит по каждому символу в шаблоне строки. - Для каждого символа в шаблоне строки проверяется, является ли он специальным символом или символом формата.
- Если символ является специальным символом, он преобразуется в своем числовое представление и добавляется в конец строки
buffer. - Если символ является символом формата, он заменяется соответствующим значением из списка аргументов функции
Log. - Если символ является обычным символом, он просто добавляется в конец строки
buffer. - В конце функции
Logстрокаbufferвыводится в консоль с помощью функцииprintf. - Функция
Logможет использоваться для отладки программного кода, позволяя выводить информацию о промежуточных значениях переменных. - Функция
Logможет быть использована для вывода информации об ошибках или предупреждениях в программе. - Функция
Logможет быть использована для вывода информации о состоянии программы или ее выполнении. - Функция
Logможет быть использована для вывода информации о входных и выходных данных программы. - Функция
Logможет быть использована для вывода информации о времени выполнения определенных частей программы. - Функция
Logможет быть использована для сравнения ожидаемых и фактических значений переменных. - Функция
Logможет быть использована для проверки правильности выполнения алгоритмов и логики программы. - Функция
Logможет быть использована для документирования кода и объяснения его работы. - Функция
Logможет быть использована для вывода любой другой информации, которая может быть полезна при отладке или анализе программы.