C++编程错误

Vij*_*jay 1 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;
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时它给了我一个错误:

 > aCC temp.cpp
Error 697: "temp.cpp", line 2 # Only namespace names are valid here.
    using namespace std;
                    ^^^
Run Code Online (Sandbox Code Playgroud)

究竟是什么问题?是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;
Run Code Online (Sandbox Code Playgroud)

Gle*_*len 8

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

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

>aCC -AA temp.cpp
Run Code Online (Sandbox Code Playgroud)

它应该永远是

<iostream>  

<iostream.h> 
Run Code Online (Sandbox Code Playgroud)

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

  • 您应该始终致力于使用标准C++.因此,您应该始终使用-AA标志进行编译.aCC默认为非标准版本是一种痛苦,但它无法帮助.有一点需要注意,你链接的所有库也必须使用-AA标志进行编译,否则你会遇到问题 (2认同)