Oracle Solaris Studio 12.2:C++ 用户指南

7.5.3 诊断有问题的搜索

有时,编译器会生成令人费解的警告或错误消息,因为它会查找您不打算编译的文件。此问题通常是由于某个文件(如 foo.h)包含模板声明,且隐式包含了另一个文件(如 foo.cc)。

如果头文件 foo.h 有模板声明,缺省情况下,编译器会搜索名为 foo 且具有 C++ 文件扩展名(.C、.c、.cc、.cpp.cxx 或 .c++)的文件。如果找到这样的文件,编译器将自动把它包含进来。有关这些搜索的更多信息,请参见7.5 模板定义搜索

如果有一个不打算这样处理的文件 foo.cc,有两种解决方法: