我对C++编程很陌生。所以我试着用我的运气来执行一些小程序。我正在开发HP-UX,它有一个可执行文件名为aCC的编译器。
我正在尝试执行一个小程序
#include <iostream.h>
using namespace std;
class myclass {
public:
int i, j, k;
};
int main()
{
myclass a, b;
a.i = 100;
a.j = 4;
a.k = a.i * a.j;
b.k = 12;
cout << a.k << " " << b.k;
return 0;
}当我编译它时,它会给我一个错误:
> aCC temp.cpp
Error 697: "temp.cpp", line 2 # Only namespace names are valid here.
using namespace std;
^^^到底是什么问题?std不是aCC编译器中的命名空间,还是aCC有一些严重的缺陷?
如果我将<iostream.h>更改为<iostream>,将得到更多的错误,如下所示。
>aCC temp.cpp
Error 112: "temp.cpp", line 1 # Include file <iostream> not found.
#include <iostream>
^^^^^^^^^^
Error 697: "temp.cpp", line 2 # Only namespace names are valid here.
using namespace std;
^^^
Error 172: "temp.cpp", line 14 # Undeclared variable 'cout'.
cout << a.k << " " << b.k;发布于 2009-11-21 14:12:56
您使用的是哪个版本的aCC?较早的版本使用了预先标准的STL实现,将所有内容都放在全局命名空间中(即不使用std名称空间)。
在编译时,还可能需要使用-AA选项。这告诉编译器使用更新的2.x版本的HP的STL库。
>aCC -AA temp.cpp它应该永远都是
<iostream>
<iostream.h> 来自于该语言的预标准实现,尽管它通常是为了保持与旧代码的向后兼容性而提供的。
发布于 2009-11-21 14:08:04
试着:
#include <iostream>而不是:
#include <iostream.h>H是一个旧样式的标头,其中所有函数都公开在全局命名空间中。当然,在这种情况下,使用名称空间std可能不起作用,因为ioStree.h头文件(在这个编译器中)可能没有公开std名称空间。如前所述,请尝试使用# include,这是一种新的C++标准库头。(谢谢Shailesh Kumar的评论!将其包括在答复中)。
https://stackoverflow.com/questions/1775573
复制相似问题