I tried to apply #define in a conditional statement, however, it seems that something went wrong.
    // The mode is forward by default
    #define FOR
    if ( mode == "forward")
    {
        clog << "mode == forward" << endl;
    }
    else if (mode == "reverse")
    {
        clog << "Enter reverse" << endl;
        #define REV
        #undef FOR
    }
    else 
    {
        cerr << "NOT A VALID MODE (FORWARD OR REVERSE)" << endl;
    }
    #ifdef FOR
    cout << "Switch to forward mode." << endl;
    #endif
    #ifdef REV
    cout << "Switch to reverse mode." << endl;
    #endif
and the output is
mode == forward
Switch to reverse mode
Isn't this contradictory?
I think it may be the problem of compiling. After precompiling, the code looks like this
int main()
{
    string mode = "forward";
    if ( mode == "forward")
    {
        clog << "mode == forward" << endl;
    }
    else if (mode == "reverse")
    {
        clog << "Enter reverse" << endl;
    }
    else
    {
        cerr << "NOT A VALID MODE (FORWARD OR REVERSE)" << endl;
    }
    cout << "Switch to reverse mode." << endl;
}
I'm just new to C++, can anyone tell me why this could happen?
Aucun commentaire:
Enregistrer un commentaire