This differs from web applications how? (not that you said it did, but the implication seems to be that C is an exception in software development in this regard)
Actual flags are useful, e.g. -codegenfoo -linkflagbar, but I hate digging through a maze of -DFLIPOPTION1 and -DUSERSUPPLIEDTEXT="hahaha" to unscramble what code the compiler actually sees, and what went wrong because of the various user supplied strings (i.e. #define overwrites).
If other languages also have this, well ugh sorry. I have grown to despise it.