Sun Studio 12:C++ 用户指南

2.3 使用不同编译器版本进行编译

从 C++ 5.1 编译器开始,编译器为模板高速缓存目录标记用于标识模板高速缓存版本的字符串。

此编译器在缺省情况下不使用缓存。只有指定了 -instances=extern 时,它才使用高速缓存。如果编译器使用高速缓存,它会检查高速缓存目录的版本,并在遇到高速缓存版本问题时发出错误消息。以后的 C++ 编译器也会检查缓存的版本。例如,具有不同模板缓存版本标识的未来版本编译器在处理此发行版本的编译器生成的缓存目录时,会发出与以下消息类似的错误:


Template Database at ./SunWS_cache is incompatible with
this compiler

编译器遇到新版本的编译器生成的缓存目录时,也会发出类似的错误。

虽然未使用版本标识符标记由 C++ 5.0 编译器生成的模板缓存目录,但当前编译器在处理 5.0 缓存目录时不会出现错误或警告。编译器将 5.0 缓存目录转换为编译器使用的目录格式。

C++ 5.0 编译器不能使用新版本编译器生成的缓存目录。C++ 5.0 编译器不能识别格式差异,并在遇到由 C++ 5.1 或新版本编译器生成的缓存目录时将会发出断言。

升级编译器时,最好清除缓存。可对包含模板高速缓存目录(大多数情况下,模板高速缓存目录名为 SunWS_cache))的每个目录运行 CCadmin -clean。也可以使用 rm -rf SunWS_cache