As to the general case, I think float.h is probably the best choice and stdarg.h probably just as good. It's been a very long time since anything but GCC itself installed headers by those names.
For libc, I think always using $CC -E is fine. You don't need to bother with the MSG_CHECKING and CACHE_VAL boilerplate. (Frankly I don't think it really matters to respect a user override of CPP, but ignoring one would be a somewhat more extreme departure from the norm.) It's best if comments refer to a URL in a bug database (libc's bugzilla or another one, whatever) with details filed there rather than pointing to a mailing list thread. If you do use URLs to mailing list archives, they must be to the canonical archive (http://sourceware.org/ml/libc-alpha/...) rather than to some third-party site. Thanks, Roland