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

该程序在没有#include<string.h>. 为什么?

4

1 回答 1

3

首先,正如评论中指出的那样,没有名为<iostream.h>. iostream.h是 1998 年 C++ 语言标准化之前使用的头文件。标准发布时,名称改为 just <iostream>(不带.h)。

其次,该标准允许标头包含其他标头(C++03 §17.4.4.1/1)。因此,您的<iostream.h>标头可能会包含<string.h>,可能是因为那里的某些模板代码依赖于某些字符串函数。结果,您的代码可以干净地编译。

不过,您不应依赖此行为。为了使您的代码具有最大的可移植性,您应该#include需要每个头文件,无论它们是否#include由其他头文件递归。

于 2012-11-18T06:29:40.547 回答