Automatyczny # definiuje zgodnie z konfiguracją Debug/Release w Visual Studio

Mam wyjście debugowania w moim programie tak:

#define DEBUG
...
#ifdef DEBUG
    std::cout << "[RE_words] " << m_re << std::endl;
#endif

I {[1] } jest definiowane w moim programie ręcznie. Zawsze komentuję linię, gdy robię wersję release. W Visual Studio istnieją również konfiguracje dla wersji Debug vs Release, które obsługują linię poleceń itp. używany do kompilacji. Czy Mogę również użyć konfiguracji "Debug", aby automatycznie zdefiniować DEBUG do kompilatora? Jak?

Author: Felix Dombek, 2011-01-05

4 answers

Visual Studio automatycznie definiuje symbol _DEBUG dla debugowania kompilacji (i NDEBUG dla nie-debugowania kompilacji).

Innym sposobem jest przejście do Ustawienia projektu - > właściwości konfiguracji - > C / C++ -> preprocesor i ręczna edycja definicji preprocesora.

Zobacz:
Ta ODPOWIEDŹ wyjaśnia różnice między _DEBUG i NDEBUG bardziej szczegółowo.
ta ODPOWIEDŹ wyjaśnia cel symbolu NDEBUG i czy jest on zdefiniowany standardowo.

 79
Author: Jan Holecek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:53:52

Użyj _DEBUG. Visual C++ definiuje to dla konfiguracji debugowania. Sprawdź dyrektywy preprocesora dla konfiguracji debugowania w oknie dialogowym Właściwości projektu.

 8
Author: Moo-Juice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-05 13:07:03

Ja też myślałem, że po prostu muszę spojrzeć na właściwość preprocesora i usunąć _DEBUG. Visual Studio próbuje pomóc, ustawiając _DEBUG, jeśli wybierzesz jedną z opcji biblioteki debugowania.

Na stronie Właściwości projektu Configuration Properties\C/C++\Code Generationopcja wybrana dla Runtime Library wpływa na kilka definicji. Po wybraniu biblioteki debugowania (/MTd lub /MDd) należy zdefiniować _DEBUG is gotowi.

Zobacz MSDN / MD, / MT ... więcej informacji na temat przełączników. Istnieje kilka definicji#, które są ustawiane na podstawie tych opcji. Są całkiem niewidoczne, gdy próbujesz znaleźć, kto ustawia # define, zanim nawet dołączysz pliki nagłówkowe!!

 3
Author: Quijote,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Tak, powinieneś sprawdzić stronę opcje projektu, Compile - >Zaawansowane opcje kompilacji. Jednak VS domyślnie automatycznie definiuje dyrektywę debugowania dla trybu debugowania.

 0
Author: Nickolay Olshevsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-05 13:09:10