-1

试图编译旧的(遗留)cpp 项目。根据https://stackoverflow.com/a/13103121/555493,该项目早于 C++98!

有没有什么方法可以编译这个项目而无需某种类型的(次要)重构?

当我运行该命令g++ -std=c++98 -pedantic -ggdb -c file.cxx时,它会出现错误fatal error: 'iostream.h' file not found

注意:我不是原始代码的作者。迁移到更现代的 C++ 版本可能是不可能的。所以现在,我只是想让它编译。

我在 mac El Capitan 上使用 brew,gcc5。

gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.38)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir:   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
4

1 回答 1

3

有没有什么方法可以编译这个项目而无需某种类型的(次要)重构?

如果允许您将 .h 文件添加到项目中,则可以iostream.h使用以下内容创建:

#ifndef MY_IOSTREAM_H
#define MY_IOSTREAM_H
#include <iostream>
using namespace std;
#endif

然后确保将文件所在的目录添加到目录列表中以搜索#included 文件。

免责声明

这并不能保证您不必更改任何其他内容。谁知道在这样一个老项目的代码库中使用了哪些平台特定的 C++98 之前的特性。

于 2016-11-14T04:45:22.430 回答