Программа с # include & lt; iostream.h & gt ;, позволяет использовать строковые функции, такие как strlen (). Зачем?

#include<iostream.h>
int main()
{
char name[] = "Mary Mon";
cout<<strlen(name);
return 0;
}

Эта программа компилируется нормально без #include<string.h>, Зачем?

2

Решение

Во-первых, как указано в комментариях, нет стандартного заголовочного файла с именем <iostream.h>, iostream.h был заголовочный файл, используемый до стандартизации языка C ++ в 1998 году. Когда стандарт был опубликован, название было изменено на <iostream> (без .h).

Во-вторых, стандарт позволяет заголовкам включать другие заголовки (C ++ 03 §17.4.4.1 / 1). Так что может случиться так, что ваш <iostream.h> заголовок включает <string.h>Вероятно, потому, что часть кода шаблона опирается на некоторую строковую функцию. В результате ваш код компилируется чисто.

Тем не менее, вы не должны полагаться на это поведение. Чтобы ваш код был максимально переносимым, вам следует #include каждый заголовочный файл вам нужен, независимо от того, являются ли они #included рекурсивно с помощью другого заголовочного файла.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector