g++ 编译的一点疑问
- sigus
- 帖子: 47
- 注册时间: 2005-07-14 20:31
g++ 编译的一点疑问
我初学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;
}
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
- 来自: 廣州
- 联系:
- lerosua
- 论坛版主
- 帖子: 8455
- 注册时间: 2007-11-29 9:41
- 联系:
Re: g++ 编译的一点疑问
是旧的c++示例了,std::表明是名字空间。好好看看书先不能正常编译的
#include <iostream.h>
int main()
{
cout << "Hello World!\n";
return 0;
}
- netphi
- 帖子: 1051
- 注册时间: 2008-08-29 21:31
Re: g++ 编译的一点疑问
C++标准库中的名字都是在一个叫std 的名字空间中声明的,cout就是在标准库中定义的名字,所以要用std::cout(加上std的前缀说明你使用的是标准的cout,而不是另外定义的cout),如果想简单地用cout,请在预处理器指示符后面加上: using namespace std;
。。。。。。。。。。。。。
- sigus
- 帖子: 47
- 注册时间: 2005-07-14 20:31
Re: g++ 编译的一点疑问
非常感谢大家的热心解答,
请问,那个头文件的区别
就是一个是iostream.h, 一个仅仅是iostream也是因为旧版本的问题吗?
另外,那个改命名空间的方法是在
#include <iostream>后面一行加上
#using namespace std; 吗?
请问,那个头文件的区别
就是一个是iostream.h, 一个仅仅是iostream也是因为旧版本的问题吗?
另外,那个改命名空间的方法是在
#include <iostream>后面一行加上
#using namespace std; 吗?
- netphi
- 帖子: 1051
- 注册时间: 2008-08-29 21:31
Re: g++ 编译的一点疑问
至于头文件,我来举个例子,区别如下:
#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++语句,前面不要加#号。
#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
- sigus
- 帖子: 47
- 注册时间: 2005-07-14 20:31
Re: g++ 编译的一点疑问
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是书,网站?
非常感谢你的帮助,让我收益不少,
我是在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++ 编译的一点疑问
是书,经典教材
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: g++ 编译的一点疑问
据闻 iostream.h 在最新版的 gcc 里面已经没有了 。。
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
- lerosua
- 论坛版主
- 帖子: 8455
- 注册时间: 2007-11-29 9:41
- 联系:
Re: g++ 编译的一点疑问
楼上,新版gcc那是多少版本啊?
- 想入非非
- 帖子: 8078
- 注册时间: 2008-07-14 22:42
- 来自: Beijing
- 联系:
Re: g++ 编译的一点疑问
lerosua 写了:楼上,新版gcc那是多少版本啊?
poplar@poplar-gnome:~$ gcc --version
gcc (Ubuntu 4.3.3-5ubuntu1) 4.3.3
Copyright © 2008 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
Ubuntu User