You can do so using preprocessing directives:
#if Condition1_SUPPORT
    #define Const1 (1 << 6)
    // ...
#elif Condition2_SUPPORT
    #define Const1 (1 << 5)
    // ...
#endif
To address the edit to the question:  you can't redefine a macro based on its previous value.  A macro can only have one value at a time and its replacement list is only evaluated when it is invoked, not when it is defined.  For example, this is not possible:
#define A 10
#define A A + 10
First, it is an illicit redefinition of the macro:  when the second line is handled, A is already defined as a macro, and so it cannot be redefined with a different replacement (you have to #undef the macro name first).  
Second, were this licit (and many compilers do accept it), the second line, when invoked, would evaluate to A + 10, not 10 + 10 or 20 as you want:  by the time the second macro definition could be invoked, the first definition no longer exists.
You can, however, use different names, like so:
#define INITIAL_A 10
#define A INITIAL_A + 10
You should consider getting one of the introductory books from The Definitive C Book Guide and List; any of them would cover what can be accomplished using the preprocessing directives in some detail.