C ++编程错误

时间:2009-11-21 14:04:57

标签: c++ acc

我是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;

2 个答案:

答案 0 :(得分:8)

您使用的是哪个版本的aCC?较旧的版本使用预标准的STL实现,将所有内容放在全局命名空间中(即不使用std命名空间)

编译时可能还需要使用-AA选项。这告诉编译器使用较新的2.x版本的HP STL库。

>aCC -AA temp.cpp

它应该始终是

<iostream>  

<iostream.h> 

来自该语言的预标准实现,但通常是为了保持与旧代码的向后兼容性而发布。

答案 1 :(得分:1)

尝试:

#include <iostream>

而不是:

#include <iostream.h>

iostream.h 是旧样式标题,其中所有函数都在全局命名空间中公开。在这种情况下,使用命名空间std可能不起作用,因为std命名空间可能不会被iostream.h头文件暴露(在此编译器中)。如上所述,尝试使用#include,这是一种新的C ++标准库头。 (感谢 Shailesh Kumar 的评论!将其包含在答案中)。