#define ist ein Prä-Prozessor Makro. Keine Variable. Das ersetzt vor dem Kompilieren einfach den Text. Und befolgt daher keinerlei Scope Regeln. Lokale defines machen daher nicht was du vielleicht denkst. Die sind überall im Code gültig nachdem sie definiert wurden.
Du kannst vielleicht #undef machen um das define rückgängig zu machen und anderweitig zu belegen:
Das kommt aber darauf an wie du DHTTYPE verwendest. Wird das an eine Funktion oder einen Konstruktor übergeben? In diesem Fall kannst du auch einfach zwei unterschiedliche Namen verwenden.