Well `typedef unsigned int uint;`
and in some file including it `typedef unsigned long uint;` would create a compile error. But in retrospect you want this error because an #ifdef/#define just silently swallows it creating weird runtime error smells later.

Right now I am using -std=c++98 in which `__cplusplus` is = 201103.  (but apples build chain is always a bit different, current one is only based on clang 3.2)