2012-06-12 55 views
2

此问题涉及通过HP-UX可执行文件进行移植的过程。在HP-UX上,可执行文件使用HP-UX ACC编译器进行编译和链接。鉴于编译器早在1996年就已经出现,它似乎并不支持标准的C++(今天使用的C++标准)。而是根据HP-UX调用经典C++的C++标准进行编译。我想知道GCC是否支持经典C++的选项?GCC编译器是否支持经典的C++?

谢谢。

+1

你的意思是,你应该期待什么可移植性问题取得源时,从HP-UX到符合标准的编译一个标准?你应该期待什么编译器特有的snafu,你能解决它们吗? – sehe

回答

5

在gcc文档中没有找到类似的内容,但我可能弄错了。

但是,您可以端口从经典到标准C++,使用以下两种准则(从HP documentation):

(1)的iostream头:

<iostream.h>映射到<iostream>

<fstream.h>地图到<fstream>和可选的<iostream>

<strstream.h>映射到<strstream>

<iomanip.h>映射到<iomanip>

注意,如果需要的ostream和istream的只是声明,而不是具体的插入和提取运算符的新的头文件<iosfwd>可以使用。这将代替其中使用下面的情况:

class ostream; // replace by #include <iosfwd> 
ostream& operator<<(ostream&, foo); // change based on (2) below 

(2)来源的映射:

执行一个(或多个)以下的。这些更改适用于IOstream标头和容器标头。 添加以下使用指令。这将适用于-AA或-AP。

namespace std {} using namespace std; 
cout << "hi guy" << endl; 

使用声明添加特定项。这只适用于-AA。

using std::cout; 
using std::endl; 
cout << "hi guy" << endl; 

在每个符号前加上std ::。这只适用于-AA。

std::cout << "hi guy" << std::endl;