您可能需要修改 TOMUI 类的 setInput 方法以支持在新操作系统中跟踪。当为步进器创建输入流时,如果使用 setInput 方法创建新 ifstream 的调用使用 ios::nocreate,那么可能存在编译错误。 由于 ios::nocreate 不是 C++ 标准的一部分,那么某些编译器(例如:Green Hills)不支持它。目前,在 tom\tomstep.cpp 文件中实现 setInput 可以选择为 UNIX 和 STL 创建 ifstreams,而不使用 ios::nocreate。 实现如下所示:
ifdef unix // unix : 实际上,如果在此放置 ios::nocreate,那么Solaris 2 无法打开阅读 // ifstream* file = new ifstream(filename); #else #ifdef OM_USE_STL ifstream* file = new ifstream(filename); #else ifstream* file = new ifstream(filename,ios::nocreate); #endif
此外,如果新环境不支持 ios::nocreate,那么您可能需要添加另一个 #ifdef 子句。例如,在 Green Hills 编译器的最后一个 #else 之前添加以下代码行:
#else #ifdef green ifstream* file = new ifstream(filename);