教えてください。

コンパイルオプションで、−DTESTと宣言するとTESTの値は
コンパイラーによって不定なのでしょうか?
gccでは1が入るようですが。

又、このような状況で #if TEST なんて使うのは邪道ですか?
やはり#ifdef TESTとやるべきですか?