Поскольку современные компиляторы достаточно умны, чтобы в большинстве случаев удалять мертвый код, отпадает необходимость ручной подачи компилятора таким образом.Т.е. вместо:
#include <iostream>
#define DEBUG
int main()
{
#ifdef DEBUG
std::cout << "Debugging...";
#else
std::cout << "Not debugging.";
#endif
}
вы можете сделать:
#include <iostream>
const bool debugging = true;
int main()
{
if (debugging)
{
std::cout << "Debugging...";
}
else
{
std::cout << "Not debugging.";
}
}
, и вы, вероятно, получите такой же или, по крайней мере, похожий вывод кода.
Edit / Note: В C и C ++ я бы абсолютно никогда не делал этого - я бы использовал препроцессор, если бы не что иное, чтобы он сразу дал понять читателю моего кода, что его часть не являетсядолжен соблюдаться при определенных условиях.Я говорю, однако, что именно поэтому многие языки избегают препроцессора.