QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1505|回复: 11

学C++,找不到好用的环境~~

[复制链接]
发表于 2006-9-25 19:58:52 | 显示全部楼层 |阅读模式
请问在MGC下面,用什么环境来做实验呢?
用GCC码?
我用GCC编译书上的例子都大堆的错误,不知道怎么拉~~

请高手推荐好用的环境~~~~~~~
发表于 2006-9-25 20:03:30 | 显示全部楼层
你用的是什么书啊?

国内用的很多教程提供的程序都是不遵循 ISO C++ 标准的,用 gcc 编译就会出现一大堆错误。

你还不如贴出错误信息,让大家帮你参考参考吧
回复

使用道具 举报

 楼主| 发表于 2006-9-26 14:04:21 | 显示全部楼层
我用的是电子工业出版社的《C++程序设计基础(第2版)》
用KDevelop编源程序,,比如,test.cpp
#include <iostream.h>

void main()
{
  cout <<"I am a student.\n";
}

[root@MagicLinux ~]# g++ -o test test.cpp
In file included from /usr/lib/gcc/i686-magic-linux/3.4.4/../../../../include/c++/3.4.4/backward/iostream.h:31,
                 from test.cpp:1:
/usr/lib/gcc/i686-magic-linux/3.4.4/../../../../include/c++/3.4.4/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
test.cpp:3: error: `main' must return `int'
test.cpp:5:2: warning: no newline at end of file

是不是要把头文件换个地方放呢?
回复

使用道具 举报

发表于 2006-9-26 14:42:01 | 显示全部楼层
[code:1]
#include <iostream>

using namespace std;

int main()
{
    cout << "I am a student.\n";
}

[/code:1]
回复

使用道具 举报

发表于 2006-9-26 14:52:14 | 显示全部楼层

#include <iostream>
using  namespace std; //使用标准名字空间 ---为了使用cout<<
试试
似乎新的包含文件是这样的!!
test.cpp:3: error: `main' must return `int'

改main声明为: int main(void)
在最后加上: return 0;///这样做是因为似乎g++要求的,如果不这样我好象没有成功过
回复

使用道具 举报

发表于 2006-9-26 18:52:51 | 显示全部楼层
呵呵,这两个都是常见问题了  

好几天前就有人在这发问过

首先,#include <iostream> 和 int main 都 ISO C++ 要求的:
1. 因为在每个编译环境中(比如 Winodws 、UNIX)对定义 C++ 源程序的文件后缀是不一样的,有的定义为 .cpp,有的定义为 .c,因此 ISO C++ 把标准库的声明文件的后缀去掉了,以适应不同的环境。

在 gcc 中,保留了 .h 文件,但写 C++ 程序时,建议你使用 <iostream> 这种格式。

至于 using namespace std; ,你应该上网找一下什么是“名字空间”,<iostream> 里的 cout 是在一个叫 std 的名字空间中。要使用 using namespace 来定义,要不然你就要这样使用 cout 了:std::cout

2. int main(),这也是 ISO C++ 的要求函数的类型不能为其它类型,只能是 int
回复

使用道具 举报

 楼主| 发表于 2006-9-26 20:23:01 | 显示全部楼层
是阿,我打开iostream.h中,cout那里就是写着std::cout,不过我不懂,,
最后,我写成了
main()
{
cout<<"I am a student.\n";
}
反而通过了,,真是汗~~~~
但又遇到一个奇怪的问题~~
#include<iostream.h>
class Circle
{
double radius;
public:
void Set_Radius(double r){radius=r;}
double Get_Radius(){return radius;}
double Get_Girth(){return 2*3.1415*radius;}
double Get_Area(){return 3.1415*radius*radius;}
};
main()
{
double ra;double i=1;
for(;i!=0;)
{
Circle A;
cout<<"please input ra=:\t";
cin>>ra;
A.Set_Radius(ra);
cout<<"A.Radius="<<A.Get_Radius()<<endl;
cout<<"A.Girth="<<A.Get_Girth()<<endl;
cout<<"A.Area="<<A.Get_Area()<<endl;
cout<<"any key to continue,[0] to stop! ";
cin>>i;
if(i!=0) i=1;
}
}
是一个求园的周长和面积的公示,但是,一旦从键盘输入字母的话,就~~~~不对了,看不懂!
回复

使用道具 举报

 楼主| 发表于 2006-9-26 20:27:02 | 显示全部楼层
看来得去看看ISO C++才可以在LINUX下顺利的学C++~~~~
回复

使用道具 举报

 楼主| 发表于 2006-9-26 20:32:56 | 显示全部楼层
[quote:09206b80a3="heyuqi"]呵呵,这两个都是常见问题了  

好几天前就有人在这发问过

首先,#include <iostream> 和 int main 都 ISO C++ 要求的:
1. 因为在每个编译环境中(比如 Winodws 、UNIX)对定义 C++ 源程序的文件后缀是不一样的,有的定义为 .cpp,有的定义为 .c,因此 ISO C++ 把标准库的声明文件的后缀去掉了,以适应不同的环境。

在 gcc 中,保留了 .h 文件,但写 C++ 程序时,建议你使用 <iostream> 这种格式。

至于 using namespace std; ,你应该上网找一下什么是“名字空间”,<iostream> 里的 cout 是在一个叫 std 的名字空间中。要使用 using namespace 来定义,要不然你就要这样使用 cout 了:std::cout

2. int main(),这也是 ISO C++ 的要求函数的类型不能为其它类型,只能是 int[/quote]
1、恩,谢谢板猪的提示哈,我一定好好的去看ISO标准,但似乎不声明using namespace std也可以用cout,只是用g++编译的时候,会出现大堆的提示,用了以后就清爽了。~~~~~~~~~不同标准害死人阿~~~~
2、原来是int main(),怪不得我写成 main()反而可以通过了。
回复

使用道具 举报

发表于 2006-9-30 09:47:12 | 显示全部楼层
你可以看一些关于STL的书,以便对命名空间等内容有所了解。
回复

使用道具 举报

发表于 2006-10-1 23:59:02 | 显示全部楼层
不知道为什么到现在,许多人还在用<iostream.h>这样的头。并且喜欢用void main
大学的教材严重有问题。
回复

使用道具 举报

发表于 2006-10-2 00:03:47 | 显示全部楼层
因为他们培养出来的,是一堆专为封闭源代码打工的编码机器。他们所想的,都是怎么能够紧紧抱住自以为很了不起其实什么都不是的“自主知识产权”。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-28 04:39 , Processed in 0.071158 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表