Zalety preprocesora warunkowego względem instrukcji warunkowych

Nigdy nie pracowałem#Jeśli, #ifdef, #ifndef, #jeszcze, #elif i#endif.

Przeglądając niektóre kody źródłowe, znalazłem szerokie zastosowanie tych dyrektyw. Zrobiłem trochę czytania na temat warunkowych preprocesorów, ale nie znalazłem żadnej wskazówkiczym różnią się od zwykłych instrukcji warunkowych. Zastanawiałem się więc, jaka jest zaleta następującego kodu:

#include<iostream>
int main()
{
    int i = 0;

    #if i == 0
         std::cout<<"This";
    #else
         std::cout<<"That";
    #endif
    return 0;
}

Nad tym:

#include<iostream>
int main()
{
    int i = 0;

    if (i == 0)
         std::cout<<"This";
    else
         std::cout<<"That";
    return 0;
}

Również kiedyużywać/ nie używać preprocesora warunkowego?

questionAnswers(5)

yourAnswerToTheQuestion