Форум программистов, компьютерный форум CyberForum.ru

Избавляемся от #ifdef DEBUG - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Winterad
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 14
15.12.2012, 04:11     Избавляемся от #ifdef DEBUG #1
Доброго времени суток. В своем проекте для отладки использую:

C++
1
2
3
4
5
6
7
#define DEBUG
...
...
...
#ifdef DEBUG
    std::cout << index << " " << name<< std::endl;
#endif
При частом использовании #ifdef DEBUG и #endif портится вид кода.

Каким образом мне лучше избавится от #ifdef DEBUG и #endif, сохранив функционал опционального отсечения отладочного кода при компиляции без #define DEBUG?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2012, 04:11     Избавляемся от #ifdef DEBUG
Посмотрите здесь:

C++ Debug errors
ifdef и Ко, указатели в фунциях C++
debug error C++
C++ NDEBUG и DEBUG
Что такое __SC__ в #ifdef? C++
C++ Корректность использования #ifdef для предотвращения компиляции
C++ Release/Debug
С++ Debug Error!( C++
C++ Директива #ifdef _DEBUG
C++ #ifdef _WIN32 что это?
C++ Команды #ifndef #ifdef и #endif
Debug-ошибка C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2437 / 1609 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
15.12.2012, 06:43     Избавляемся от #ifdef DEBUG #2
Очевидно, если в конкретном месте условная компиляция мозолит глаза, ее надо вынести куда-нибудь.

Вспомним макрос assert. Если определен макрос NDEBUG, assert определяется примерно так:
C++
1
#define assert(ignore)((void) 0)
Можно по аналогии написать свою библиотечку логирования, либо поискать готовые решения. Например: http://code.google.com/p/google-glog/
Yandex
Объявления
15.12.2012, 06:43     Избавляемся от #ifdef DEBUG
Ответ Создать тему
Опции темы

Текущее время: 06:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru