Whether or not you use the Arduino IDE is not really the point here.
Changing defines before including an include file is fraught with peril. Other CPP files that include that file won't have your magic defines in front of them.
The standard method is to pass things like pin numbers to the constructor, or some initialization function (like "begin").
I don't see what the objection is to that.