#include<iostream.h>
int main()
{
char name[] = "Mary Mon";
cout<<strlen(name);
return 0;
}
此程序在没有#include<string.h>
的情况下正常编译。为什么呢?
答案 0 :(得分:3)
首先,正如评论中指出的那样,没有名为<iostream.h>
的标准头文件。 iostream.h
是在1998年C ++语言标准化之前使用的头文件。当标准发布时,名称更改为<iostream>
(没有.h
)。
其次,标准允许标题包含其他标题(C ++03§17.4.4.1/ 1)。因此,<iostream.h>
标头可能包含<string.h>
,可能是因为某些模板代码依赖于某些字符串函数。因此,您的代码可以完整地编译。
尽管如此,你不应该依赖这种行为。为了使您的代码最具可移植性,您应该#include
所需的每个头文件,无论它们是否由其他头文件递归#include
。