g++ 编译的一点疑问

软件和网站开发以及相关技术探讨
回复
头像
sigus
帖子: 47
注册时间: 2005-07-14 20:31

g++ 编译的一点疑问

#1

帖子 sigus » 2009-03-05 14:56

我初学c++,以前有一些java的基础,现在第一个hello world的程序就遇到了问题。
g++ hello.cpp -Wall -o xhello
第一个程序可以正常编译
第二个程序不能正常编译,显示找不到头文件,另外cout它也表示无法识别,为什么?
因为我自学的教程上都是第二个那样的程序,我如果弄不清楚,我真不知道该怎么学下去了。
我也不清楚std::的意思,只是我偶尔发现某网站有这个hello world 的程序,我一式发现可以用。

可以正常编译的
#include <iostream>
int main()
{
std:: cout <<"Hello World!\n";
return 0;
}

不能正常编译的
#include <iostream.h>
int main()
{
cout << "Hello World!\n";
return 0;
}
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: g++ 编译的一点疑问

#2

帖子 BigSnake.NET » 2009-03-05 15:00

认真学 c++
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: g++ 编译的一点疑问

#3

帖子 lerosua » 2009-03-05 15:04

不能正常编译的
#include <iostream.h>
int main()
{
cout << "Hello World!\n";
return 0;
}
是旧的c++示例了,std::表明是名字空间。好好看看书先
头像
netphi
帖子: 1051
注册时间: 2008-08-29 21:31

Re: g++ 编译的一点疑问

#4

帖子 netphi » 2009-03-05 15:15

C++标准库中的名字都是在一个叫std 的名字空间中声明的,cout就是在标准库中定义的名字,所以要用std::cout(加上std的前缀说明你使用的是标准的cout,而不是另外定义的cout),如果想简单地用cout,请在预处理器指示符后面加上: using namespace std;
。。。。。。。。。。。。。
头像
sigus
帖子: 47
注册时间: 2005-07-14 20:31

Re: g++ 编译的一点疑问

#5

帖子 sigus » 2009-03-05 17:16

非常感谢大家的热心解答,
请问,那个头文件的区别
就是一个是iostream.h, 一个仅仅是iostream也是因为旧版本的问题吗?

另外,那个改命名空间的方法是在
#include <iostream>后面一行加上
#using namespace std; 吗?
头像
netphi
帖子: 1051
注册时间: 2008-08-29 21:31

Re: g++ 编译的一点疑问

#6

帖子 netphi » 2009-03-05 18:32

至于头文件,我来举个例子,区别如下:
#include<iostream.h> //带.h后缀,这是旧的C++头文件,C++未标准化之前的头文件就是这样使用的(现在仍然可以用),这些头文件均不在namespace std中
#include<iostream> //不带后缀,这是标准的C++头文件,它们都在namespace std里面。
#include<string.h> //C库头文件,内容不在namespace std中。
#include<cstring> //C库头文件的C++名。C库头文件的C++名是以字母c开头,后面去掉了.h后缀的C名字,它们都在namespace std里面。
#include "stafx.h" //头文件名用“”括起来的,属于自定义头文件,不在namespace std中。
还有,using namespace std;是一条C++语句,前面不要加#号。
。。。。。。。。。。。。。
头像
netphi
帖子: 1051
注册时间: 2008-08-29 21:31

Re: g++ 编译的一点疑问

#7

帖子 netphi » 2009-03-05 18:33

楼主你看的是什么C++教材?我记得C++ Primer里面对这些内容说得很详细的啊~~
。。。。。。。。。。。。。
头像
sigus
帖子: 47
注册时间: 2005-07-14 20:31

Re: g++ 编译的一点疑问

#8

帖子 sigus » 2009-03-07 5:17

netphi:
非常感谢你的帮助,让我收益不少,

我是在ubuntuforums.org找到的一个帖子
http://ubuntuforums.org/showpost.php?p=1983565

里面有一个teach yourself C++的连接,号称21天学会C++,应该是入门
具体教程地址http://newdata.box.sk/bx/c/index.htm

你提到的C++ Primer是书,网站?
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: g++ 编译的一点疑问

#9

帖子 lerosua » 2009-03-07 9:26

是书,经典教材
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: g++ 编译的一点疑问

#10

帖子 BigSnake.NET » 2009-03-07 10:24

据闻 iostream.h 在最新版的 gcc 里面已经没有了 。。
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: g++ 编译的一点疑问

#11

帖子 lerosua » 2009-03-07 11:59

楼上,新版gcc那是多少版本啊?
头像
想入非非
帖子: 8078
注册时间: 2008-07-14 22:42
来自: Beijing
联系:

Re: g++ 编译的一点疑问

#12

帖子 想入非非 » 2009-03-07 12:41

lerosua 写了:楼上,新版gcc那是多少版本啊?
poplar@poplar-gnome:~$ gcc --version
gcc (Ubuntu 4.3.3-5ubuntu1) 4.3.3
Copyright © 2008 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
:em06
Ubuntu User
回复