#ifdef _DEBUG режим выпуска в версии 2008

Есть часть моего проекта, которая не работает в режиме релиза. Я могу проверить это с помощью printf и это ничего не печатает. Я покажу вам этот код:

void SNKsomething::vGetState()
{
#ifdef SNK_STH
for(int i = 0; i < 2; i++)
{
printf("sth\n');
}

Дополнительно, SNK_STH определяется в файлах Globals.h следующим образом

#ifdef _DEBUG // in Project properties
#define SNK_STH
#else
// .....

Итак, я не вижу, что я печатаю его в режиме выпуска. Я хочу знать, что я должен что-то сделать с _DEBUG в свойствах проекта VS-2008. не так ли?

0

Решение

_DEBUG — это макрос препроцессора. Если вы щелкнете правой кнопкой мыши по свойствам и перейдете на c / c ++, препроцессор является одним из вариантов.

Определения препроцессора различны для выпуска и отладки. Если вы добавите SNK_STH в макросы препроцессора релиза, вы увидите ваш printf.

Если вы хотите увидеть код как в отладочной, так и в выпускной версиях, рассмотрите возможность его извлечения из ifdef.

1

Другие решения

У меня были проблемы с макрокомандой _DEBUG, очень полезной оказалась
Функция IsDebuggerPresent
который возвращает логическое значение:

Если текущий процесс выполняется в контексте отладчика, возвращаемое значение отлично от нуля.

Если текущий процесс не выполняется в контексте отладчика, возвращаемое значение равно нулю.

0

По вопросам рекламы [email protected]