1

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

究竟是什么问题?在 aCC 编译器中不std被视为命名空间,还是 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;
4

2 回答 2

8

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

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

>aCC -AA temp.cpp

它应该永远是

<iostream>  

<iostream.h> 

is from a pre-standard implementation of the language, though it is usually shipped so as to maintain backwards compatibility with older code.

于 2009-11-21T14:12:56.493 回答
1

尝试:

#include <iostream>

代替:

#include <iostream.h>

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

于 2009-11-21T14:08:04.383 回答