#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