#include<iostream.h>
int main()
{
char name[] = "Mary Mon";
cout<<strlen(name);
return 0;
}
このプログラムは、なしで正常にコンパイルされます#include<string.h>。なんで?
#include<iostream.h>
int main()
{
char name[] = "Mary Mon";
cout<<strlen(name);
return 0;
}
このプログラムは、なしで正常にコンパイルされます#include<string.h>。なんで?
まず、コメントで指摘されているように、という名前の標準ヘッダー ファイルはありません<iostream.h>。 iostream.hは、1998 年に C++ 言語が標準化される前に使用されていたヘッダー ファイルでした。標準が公開されたとき、名前は単に<iostream>(. を除いて.h) に変更されました。
次に、標準では、ヘッダーに他のヘッダーを含めることができます (C++03 §17.4.4.1/1)。そのため、<iostream.h>ヘッダーに が含まれている可能性があります<string.h>。おそらく、テンプレート コードの一部が文字列関数に依存しているためです。その結果、コードはきれいにコンパイルされます。
ただし、この動作に依存するべきではありません。コードの移植性を最大限に高めるには、他のヘッダー ファイルによって再帰的に作成される#includeかどうかに関係なく、必要なすべてのヘッダー ファイルを作成する必要があります。#include