Thanks for reporting the missed headers.
As for the "crazy defines", they serve two purposes. First, as Vladimir already mentioned, by defining this users explicitly express that they want to use some preview feature which may later change; also, these macros may serve as a remainder about using a preview feature. Second, having a macro per feature instead of just a single "umbrella" one allows users to use CPFs selectively. Though perhaps support for an umbrella macro can also be implemented inside tbb.h for those who don't mind using all (current and future) preview features :)