> What I specifically thought it might be is in <linux/types.h> > there is a section that reads something like > > #if defined(__GNUC__) && !defined(__STRICT_ANSI__) > typedef __u64 uint64_t; > typedef __u64 u_int64_t; > typedef __s64 int64_t; > #endif > > I don't understand the reasoning behind this, > but it looks like if 1) GNU C is not indicated, -or- > if 2) ANSI C is indicated, then __u64 doesn't get typedef'ed.
The types in question can't be exposed to user space in a strict posix/ansi compliant environment. __GNUC__ is one of the things defined when you ask the compiler to use the GNU extensions, and __STRICT_ANSI__ is one of the symbols coming out when you want to be exactly correct. So its basically "if its gnu stuff and I'm not a language lawyer.."
