2 つのファイルmy_program.cpp
とそのヘッダーがありmy_program.h
ます。
my_program.cpp
これだけが含まれています:
#include "my_program.h"
using namespace std;
my_program.h
wstring
次のように、を返す関数へのポインタが含まれています。
using namespace std;
typedef wstring (*my_function)(wstring, int, int, int, int);
プログラムはこの状態ではコンパイルされません (typedef で停止します... ISO C++ は型のない 'wstring' の宣言を禁止していると言っています) が、.cpp ファイルに#include <iostream>
前に追加する#include "my_program.h"
と、プログラムは奇跡的にコンパイルされます。
なぜこれが起こるのですか?愚かな過ちを犯さなかったことを願うばかりで、笑われることになるでしょう。