может ли кто-нибудь объяснить мне, почему MAC-файлы DEBUG предпочтительнее, чем опция WRITE ??? Можете ли вы также показать mw полный пример для ПОДГОТОВКИ К ДЕБУДИРОВАНИЮ. (DEBUG MACROS)? Как DEBUG MACROS отлаживают наши программы?Макросы для режимов отладки и выпуска
ответ
Отладочные макросы не «отлаживают программы», но обеспечивают возможность отладки программы.
Это может быть дополнительная проверка.
#ifdef DEBUG
#define CHECK_NON_ZERO(x) if (x == 0) cout << "Error, should be zero!\n";
#else
#define CHECK_NON_ZERO(x)
#endif
float func(int x)
{
CHECK_NON_ZERO(x);
return 1.0f/x;
}
Очевидно, что как только вы сделали свое тестирование кода, в сборке релиза, вы, вероятно, не хотите иметь дополнительные проверки, которые x
ненулевые, так что вы не имеете дополнительные проверить.
ok Я получил его. но почему вы пишите #ifdef DEBUG ?? вы имеете в виду режим DEBUG? или любое слово вместо DEBUG вы могли бы использовать ???? – ProDev7
Я имею в виду в построении отладки, но в разных средах есть разные способы сказать «сборка отладки», и вы, конечно, можете иметь свой собственный '#ifdef MY_DEBUG' и использовать' -DMY_DEBUG' в качестве опции для компилятора, когда хотите включите это. Это не вопрос моего поста »- дело в том, что SOMETIMES у вас есть код, который имеет смысл только при разработке программного обеспечения. Ясно, что вызов этой функции с нулевым значением приведет к плохим результатам, поэтому хорошо проверить ее. Но «хороший код» не должен называть эту функцию нулевым, в первую очередь, поэтому нет необходимости тестировать ее в выпуске. –
Я назвал эту функцию нулевой, но она не печатала ошибку, которую вы написали. – ProDev7
Существует старый добрый утвердитель (...). Быть noop, если NDEBUG определен, но проверка, если NDEBUG не определен.
К слову: отладочные макросы не отлаживают, просто регистрируют информацию.
ОК спасибо. понятно теперь – ProDev7
Где вы видели макрос DEBUG? У вас есть пример? Кроме того, что такое опция WRITE? –
Я имею в виду WRITE, что мы используем printf или cout для проверки значений наших переменных во избежание ошибок. – ProDev7
Я не думаю, что вы можете сказать, что макрос DEBUG предпочтительнее использовать 'printf()', потому что они часто используются вместе. –