Here's an example where <cstdio> & <cstring> are required, but VC++ compiles it anyways. They're probably included in <iostream> because if you remove that, you get the expected errors.
Code:
#include <iostream>

//#include <cstdio>
//#include <cstring>

using namespace std;

int main()
{
	char str[] = "fdsfsdfsdfs";
	printf( "str has %d chars", strlen( str ) );

	return 0;
}