Есть часть моего проекта, которая не работает в режиме релиза. Я могу проверить это с помощью 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. не так ли?
_DEBUG — это макрос препроцессора. Если вы щелкнете правой кнопкой мыши по свойствам и перейдете на c / c ++, препроцессор является одним из вариантов.
Определения препроцессора различны для выпуска и отладки. Если вы добавите SNK_STH в макросы препроцессора релиза, вы увидите ваш printf.
Если вы хотите увидеть код как в отладочной, так и в выпускной версиях, рассмотрите возможность его извлечения из ifdef.
У меня были проблемы с макрокомандой _DEBUG, очень полезной оказалась
Функция IsDebuggerPresent
который возвращает логическое значение:
Если текущий процесс выполняется в контексте отладчика, возвращаемое значение отлично от нуля.
Если текущий процесс не выполняется в контексте отладчика, возвращаемое значение равно нулю.