I too like predefined symbols to be defined as themselves with the appropriate safeguards against recursion looping. But I don't think #define a b #define b a needs to be worried about besides making it illegal.