VC's "evil" extension: Pre-definition of basic types
In VC, you may find that you can use "size_t" directly without including any headers.
size_t i = 0;
int main()
{
atexit(0);
}
However, "size_t" is not a built-in type. It is a typedef in <stddef.h>. So what's the magic?
In VC compiler, it will include some internal headers for various reasons before compile your code.
For example, "size_t" and "atexit" are introduced in the internal header to support EH (Exception Handling) and RTTI (Run-Time Type Information).
It's better not to rely on this extension. Whenever you use the types / functions, include the corresponding headers. Otherwise your code will break on other compilers :-)