Как использовать #ifdef _DEBUG в Linux? - PullRequest
2 голосов
/ 27 января 2012

У меня проблема с макросом _DEBUG в Linux C ++. Я пытался использовать что-то вроде этого:

#ifdef _DEBUG
cout << "Debug!" << endl;
#endif

Но это не работает, когда я выбираю Debug в IDE. Однако это работало на Windows. Я использую Eclipse IDE для кодирования C ++ в Linux.

Ответы [ 3 ]

2 голосов
/ 31 августа 2014

Если вы используете cmake , укажите следующее в вашем верхнем уровне CMakeLists.txt file

set_directory_properties(PROPERTIES COMPILE_DEFINITIONS_DEBUG "_DEBUG")

найдено в CMake Mailinglist

1 голос
/ 30 июля 2017

В Windows вы, вероятно, использовали Visual Studio, которая автоматически определяет символ _DEBUG при сборке решения в режиме отладки.Символы обычно определяются при вызове компилятора, и затем они будут использоваться на этапе предварительной обработки.

Например, если вы используете GCC через командную строку и хотите повторно использовать символ _DEBUG, потому чтовы обрабатываете уже установленную кодовую базу, вы можете определить ее с помощью параметра -D через командную строку.

#include <iostream>
int main() {
  std::cout << "Hello world!\n";
#ifdef _DEBUG
  std::cout << "But also Hello Stack Overflow!\n";
#endif
  return 0;
}

Скомпилировать это с помощью следующей командной строки

 g++ -D _DEBUG define.cpp

даст следующий результат

Hello world!
But also Hello Stack Overflow!

Лучшим вариантом для затмения cdt может быть изменение свойств путей и символов в свойствах проекта.

1 голос
/ 27 января 2012

Поместите #define _DEBUG где-нибудь к северу от того места, где у вас есть этот фрагмент, или в настройках вашего проекта.

...