首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++编程误差

C++编程误差
EN

Stack Overflow用户
提问于 2009-11-21 14:04:56
回答 2查看 1.1K关注 0票数 1

我对C++编程很陌生。所以我试着用我的运气来执行一些小程序。我正在开发HP-UX,它有一个可执行文件名为aCC的编译器。

我正在尝试执行一个小程序

代码语言:javascript
复制
#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;
}

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

代码语言:javascript
复制
 > aCC temp.cpp
Error 697: "temp.cpp", line 2 # Only namespace names are valid here.
    using namespace std;
                    ^^^

到底是什么问题?std不是aCC编译器中的命名空间,还是aCC有一些严重的缺陷?

如果我将<iostream.h>更改为<iostream>,将得到更多的错误,如下所示。

代码语言:javascript
复制
>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;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-21 14:12:56

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

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

代码语言:javascript
复制
>aCC -AA temp.cpp

它应该永远都是

代码语言:javascript
复制
<iostream>  

<iostream.h> 

来自于该语言的预标准实现,尽管它通常是为了保持与旧代码的向后兼容性而提供的。

票数 8
EN

Stack Overflow用户

发布于 2009-11-21 14:08:04

试着:

代码语言:javascript
复制
#include <iostream>

而不是:

代码语言:javascript
复制
#include <iostream.h>

H是一个旧样式的标头,其中所有函数都公开在全局命名空间中。当然,在这种情况下,使用名称空间std可能不起作用,因为ioStree.h头文件(在这个编译器中)可能没有公开std名称空间。如前所述,请尝试使用# include,这是一种新的C++标准库头。(谢谢Shailesh Kumar的评论!将其包括在答复中)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1775573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档