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++ 言語が標準化される前に使用されていたヘッダー ファイルでした。標準が公開されたとき、名前は単に<iostream>(. を除いて.h) に変更されました。

次に、標準では、ヘッダーに他のヘッダーを含めることができます (C++03 §17.4.4.1/1)。そのため、<iostream.h>ヘッダーに が含まれている可能性があります<string.h>。おそらく、テンプレート コードの一部が文字列関数に依存しているためです。その結果、コードはきれいにコンパイルされます。

ただし、この動作に依存するべきではありません。コードの移植性を最大限に高めるには、他のヘッダー ファイルによって再帰的に作成される#includeかどうかに関係なく、必要なすべてのヘッダー ファイルを作成する必要があります。#include

于 2012-11-18T06:29:40.547 に答える