我是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)
您使用的是哪个版本的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)
来自语言的预标准实现,但通常是为了保持与旧代码的向后兼容性而发布.