A plain integer is going to be implicitly cast to int in all calculations and assignments.
#define simply tells the preprocessor to replace all references to a symbol with something else. This is the same as doing a global find-replace on your code and replacing M_40 with 40.