#include<iostream.h>
int main()
{
char name[] = "Mary Mon";
cout<<strlen(name);
return 0;
}
Эта программа компилируется нормально без #include<string.h>
, Зачем?
Во-первых, как указано в комментариях, нет стандартного заголовочного файла с именем <iostream.h>
, iostream.h
был заголовочный файл, используемый до стандартизации языка C ++ в 1998 году. Когда стандарт был опубликован, название было изменено на <iostream>
(без .h
).
Во-вторых, стандарт позволяет заголовкам включать другие заголовки (C ++ 03 §17.4.4.1 / 1). Так что может случиться так, что ваш <iostream.h>
заголовок включает <string.h>
Вероятно, потому, что часть кода шаблона опирается на некоторую строковую функцию. В результате ваш код компилируется чисто.
Тем не менее, вы не должны полагаться на это поведение. Чтобы ваш код был максимально переносимым, вам следует #include
каждый заголовочный файл вам нужен, независимо от того, являются ли они #include
d рекурсивно с помощью другого заголовочного файла.
Других решений пока нет …