c++在linux和在 windows下有区别?

软件和网站开发以及相关技术探讨
vitamin
帖子: 247
注册时间: 2008-09-23 21:13

c++在linux和在 windows下有区别?

#1

帖子 vitamin » 2008-11-06 11:15

在看一本c++的书,显然是在windous下写的。按书输入了如下程序:
#include<iostream.h>
union time
{
int year;
int month;
int day;
};

void main()
{
time today,yesterday,tomorow;
today.year=2004;
today.month=3;
tonday.day=20;
yesterday.year=today.year;
tomorow.year=today.year;
yesterday.month=today.month;
tomorow.month=today.month;
yesterday.day=today.day-1;
tomorow.day=today.day+1;
cout<<"Output yesterday's date:"<<end1;
cout<<yesterday.year<<end1;
cout<<yesterday.month<<end1<<yesterday.day<<end1;
却出现如下错误:
union.c:1:22: 错误: iostream.h:没有该文件或目录
union.c: 在函数‘main’中:
union.c:11: 错误: ‘time’未声明 (在此函数内第一次使用)
union.c:11: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
union.c:11: 错误: 所在的函数内也只报告一次。)
union.c:11: 错误: expected ‘;’ before ‘today’
union.c:12: 错误: ‘today’未声明 (在此函数内第一次使用)
union.c:14: 错误: ‘tonday’未声明 (在此函数内第一次使用)
union.c:15: 错误: ‘yesterday’未声明 (在此函数内第一次使用)
union.c:16: 错误: ‘tomorow’未声明 (在此函数内第一次使用)
union.c:21: 错误: ‘cout’未声明 (在此函数内第一次使用)
union.c:21: 错误: ‘end1’未声明 (在此函数内第一次使用)
union.c:10: 警告: ‘main’的返回类型不是‘int’
什么原因呢?
念几句佛经就以为自己在悟道,引用几句圣经就以为自己是上帝的使者。
躲在阴暗的角落就以为看不见你那肮脏的灵魂?
游走在灰色领域就以为安然无恙?
举头三尺有神明,不是不报是时候未到。
nickdgd
帖子: 156
注册时间: 2008-06-21 17:20
联系:

Re: c++在linux和在 windows下有区别?

#2

帖子 nickdgd » 2008-11-06 12:03

没找到iostream.h是include的路径没设对。
文件扩展名.c可能会对编译器有影响,比如IDE可能会自动调用c的编译器而不是c++的编译器进行编译从而产生问题。尝试改成.cpp。
那个不是end1,是endl。注意数字1和字母l的区别。
union我没用过,不了解有没有问题。
我的游记和相册:http://www.wensh.net
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: c++在linux和在 windows下有区别?

#3

帖子 cnkilior » 2008-11-06 12:06

#include<iostream.h>----->#include<iostream>
sqrabs
帖子: 7
注册时间: 2008-04-25 23:18
来自: WHUT

Re: c++在linux和在 windows下有区别?

#4

帖子 sqrabs » 2008-11-08 21:34

楼主看的这书质量不太好,已经落后于标准了。新的c++标准规定只有iostream,而没有iostream.h,等等。楼主的代码即使在windows下也会发现在vc6可以正常运行,而在vs2003以上就会报错。
头像
fearmind
帖子: 212
注册时间: 2007-08-24 13:32

Re: c++在linux和在 windows下有区别?

#5

帖子 fearmind » 2008-11-08 21:39

用标准C就行了
头像
xizhi.zhu
帖子: 46
注册时间: 2008-09-20 4:47
来自: Tampere
联系:

Re: c++在linux和在 windows下有区别?

#6

帖子 xizhi.zhu » 2008-11-12 2:01

#include <iostream>
using namespace std;
lingyunxs
帖子: 105
注册时间: 2007-04-21 11:57

Re: c++在linux和在 windows下有区别?

#7

帖子 lingyunxs » 2008-11-13 0:54

太夸张了吧,把年月日的结构定义成了 union 联合类型, 能用来表示年月日吗?
phil1984
帖子: 1
注册时间: 2007-08-31 22:58

Re: c++在linux和在 windows下有区别?

#8

帖子 phil1984 » 2008-11-14 10:46

这书是不是清华的,清华的计算机,绝大多数是次品。
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: c++在linux和在 windows下有区别?

#9

帖子 自由建客 » 2008-11-15 21:18

phil1984 写了:这书是不是清华的,清华的计算机,绝大多数是次品。
:em04 :em05 :em11
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: c++在linux和在 windows下有区别?

#10

帖子 BigSnake.NET » 2008-11-15 21:27

1. ???.h 的头文件是过时的。但是LZ是找不到,看来是没安装开发包
2. union time today,yesterday,tomorrow;
3. tonday 打错了
4. endl 不是 end1 。。。

不过上面的都是小问题,最大的问题见 7 楼
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
poet
帖子: 2841
注册时间: 2006-09-11 22:47

Re: c++在linux和在 windows下有区别?

#11

帖子 poet » 2008-11-15 21:37

vitamin 写了:在看一本c++的书,显然是在windous下写的。按书输入了如下程序:
什么原因呢?
如果只是要问windows/linux的区别的话,这么说:
1。Linux下有gcc和g++都可以作为标准的C++编译器,而Windows下只有C++编译器。这个区别是:gcc编译器会根据文件后缀把.c文件当作C语言编译,而g++和windows下的c++会把所有程序都当作C++编译。——因此你的程序取名 .c ,在 windows下可以编译,在 gcc 下会被当作c程序。

2。其他的错误别人都说了。至于那个union的问题很变态,但是考虑的楼主是在抄书,只能认为这本书是故意在举一个错误的编程例子。
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: c++在linux和在 windows下有区别?

#12

帖子 xhy » 2008-11-15 21:43

g++只是用一些参数调用了gcc而已,本质上是同一个东西
目前负债150多万
头像
shellex
帖子: 2180
注册时间: 2007-02-18 19:33
系统: OSX
来自: lyric.im
联系:

Re: c++在linux和在 windows下有区别?

#13

帖子 shellex » 2008-11-15 21:52

,,,
既然你诚心诚意地问了
我就大慈大悲地告诉你
为了防止世界被破坏
为了维护世界的和平
贯彻爱与真实的罪恶
可爱而又迷人的反派角色
武藏,小次郎
我们是穿越银河的火箭队,白洞白色的明天在等着我们。就是这样!!喵~~
jiucaihua
帖子: 3
注册时间: 2008-11-20 10:02

Re: c++在linux和在 windows下有区别?

#14

帖子 jiucaihua » 2008-11-20 11:11

头文件引入的问题,应该使用心得标准#include<iostream>并且要使用命名空间using namespace std;才可以直接使用cin>>和cout<<否则要这样使用std::cin>> std::cout<<
应该是你使用的教材不太好 有点老了. :em01
vitamin
帖子: 247
注册时间: 2008-09-23 21:13

Re: c++在linux和在 windows下有区别?

#15

帖子 vitamin » 2008-11-23 9:15

BigSnake.NET 写了:1. ???.h 的头文件是过时的。但是LZ是找不到,看来是没安装开发包
2. union time today,yesterday,tomorrow;
3. tonday 打错了
4. endl 不是 end1 。。。

不过上面的都是小问题,最大的问题见 7 楼

开发包?怎么装?
念几句佛经就以为自己在悟道,引用几句圣经就以为自己是上帝的使者。
躲在阴暗的角落就以为看不见你那肮脏的灵魂?
游走在灰色领域就以为安然无恙?
举头三尺有神明,不是不报是时候未到。
回复