#define SAFE_DELETE(p) if ( (p) != NULL ) { delete (p); (p) = NULL; }
↑これなんかは#defineと定数が全く無関係なのを説明するのに良い例だと思うんだよね。