+1. I have never found any useful documentation on there. I might be biased (I hate MS) but I generally do not like the way they structure it and the info they give is obscure. Not the best resource overall.

Nice sites, but the C++ Quiz and C Quiz site while good tests for serious programmers. Though, the setup of the sites is too lax as you can literally just go and guess the answers without even reading the question to get it right.

MSDN documents functions for not just one operating system or one API, but also versions of Windows going back more than ten years and not just in C but also in Java, .Net, C# and VB (granted MS invented three of those so they have a vested interest in advertising their use). Do you not like all of the data types? Because that's a WinAPI thing, IMO MSDN does a good job of explaining that whole cluster f***.

No flavor of *nix comes close to offering the amount of data about it's API, for the past present and future, sorted by subject, that Microsoft does.

Although all I really want is just a nice rigorous discussion of what each function does, and a little about the philosophy behind a particular section of an API (like in their 'about' pages, or 'using' pages).

Linux is almost lacking, man provides the nice reference for functions and all that, and the internet seems to provide the extra talk needed to make me comfortable. But Linux is just a kernel, and the functions used to interface with it only cover a subset of what the Windows API can do... to get the extra functionality you need to start dealing with all the other components people usually have in a Linux distribution, and so documentation for Linux is a real headache (and 'where the hell do I start' is a lot harder to answer).

It might be a stunt to freedom, but Windows' monolithic nature makes it a hell of a lot easier to work with in some respects.

At the danger of going off-topic, can any recommend any URLs that might point me in the direction of a guide for something like a typical Linux OS? Which files do what and where and just generally how the system works is still a mystery to me. Where do I go for what config files? Where are the binaries stored? How is library management done on Linux?

That 'C the hard way' link looks pretty good for explaining how to maintain C projects at least... and I for the sake of managing files and 'logical units' and all that it's the same stuff for C++.