设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
C\C++
›
完全正确的C++源程序在GCC下编译错误
返回列表
查看:
1346
|
回复:
9
完全正确的C++源程序在GCC下编译错误
[复制链接]
FreeID
FreeID
当前离线
积分
49
IP卡
狗仔卡
发表于 2006-4-2 21:43:59
|
显示全部楼层
|
阅读模式
源程序为:
#include<iostream> //4.0.0开始,这个头文件就没有后缀".h"了
void main()
{
int nNum;
cout<<"please input a Hex integer:";
cin>>hex>>nNum;
cout<<"Oct\t"<<oct<<nNum<<endl; //八进制显示
cout<<"Dec\t"<<dec<<nNum<<endl; //十进制显示
cout<<"Hex\t"<<hex<<nNum<<endl; //十六进制显示
}
错误提示为:
main函数应该返回 int 类型
cout在这个作用域不被承认(declared)
oct在这个作用域不被承认(declared)
dec在这个作用域不被承认(declared)
endl在这个作用域不被承认(declared)
cin在这个作用域不被承认(declared)
我的系统为:
fedora core 4 _64
gcc & libc 4.0.0
vim 5.3
iostream存放在 /usr/include/c++/4.0.0/
遇到过同样问题或者明白其中原由的各位,请务必解答!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
MatthewGong
MatthewGong
当前离线
积分
311
IP卡
狗仔卡
发表于 2006-4-2 22:32:55
|
显示全部楼层
在标准C++中,标准库都放在std名字空间中了。
用iostream的话
要不引用名字空间std,如使用语句:using namespace std;
或单独声明空间中的类型、对象,如: using std::cout;
要么在调用cout时用 std::cout代替。
楼主的C++程序对于特定的编译器是正确的。但是不符合标准C++标准而已。
既然楼主使用C++,建议学习一下标准C++,相信会有益处的。
回复
支持
反对
使用道具
举报
显身卡
leros_H
leros_H
当前离线
积分
414
IP卡
狗仔卡
发表于 2006-4-2 22:37:19
|
显示全部楼层
晕!楼主,你学C++多久了啊?敢说这是完全正确的C++代码!偶汗!
1.头文件问题,#include <iostream.h> 和 #include <iostream> 是两种风格的代码方式,前者是为了和C代码兼容而存在的!包含了iostream.h ,下面的cin,cout等都类似于声明为全局作用域了!因此不用声明它的名字空间! 而使用 iostream 为头文件, 你要使用cin,cout等,就要声明他们的名字空间先!有两种方法,可以这样 std::cin ,std::cout , std::endl , 或者直接在你程序中声明要使用的名字空间 usenamespace std; 这样,下面就可直接使用cin,cout等!
Linux下的main程序一般都会返回值,因此你要把main声明返回int就可以了!
回复
支持
反对
使用道具
举报
显身卡
x11
x11
当前离线
积分
2823
IP卡
狗仔卡
发表于 2006-4-3 09:11:25
|
显示全部楼层
呵呵,如此完全正确阿
回复
支持
反对
使用道具
举报
显身卡
manphiz
manphiz
当前离线
积分
1153
IP卡
狗仔卡
发表于 2006-4-3 10:20:59
|
显示全部楼层
汗,什么时代的人?不知道namespace std,甚至还能写出void main()来……连C99现在都只用int main()了。
由此可小窥国内的C++环境是个什么样子……
回复
支持
反对
使用道具
举报
显身卡
FreeID
FreeID
当前离线
积分
49
IP卡
狗仔卡
楼主
|
发表于 2006-4-3 10:38:35
|
显示全部楼层
非常感谢楼上MatthewGong 与 leros_H 的解答,对于我的肤浅实在感到汗颜。再次感谢二位!这个问题困饶了我很久,一直找不到根结,所以脑子发热的可以!
谢谢!
回复
支持
反对
使用道具
举报
显身卡
ideawu
ideawu
当前离线
积分
1837
IP卡
狗仔卡
发表于 2006-4-3 12:13:54
|
显示全部楼层
我们学校教的C++也是用和楼主几乎相同的格式,只是用iostream.h代替iostream
用了中国人的教材(本质上说是小册子)。7个星期28学时结业。
回复
支持
反对
使用道具
举报
显身卡
FreeID
FreeID
当前离线
积分
49
IP卡
狗仔卡
楼主
|
发表于 2006-4-3 18:04:21
|
显示全部楼层
非常感谢各位网友的指导和关注,现在问题已经得到解决.根据个人的习惯,现总结于下:
ANSI C++在C++标准库中定义了新的规则,如要使用标准库里的名字,如cout,不能在程序中直接使用,而需要在预处理指示符
#include<iostream>后加入
using namespace std; //这里std是standard(标准)的缩写。或者还可以变通成以下格式:
using std::cout //这一行适用于标准名引用较少的情况
std::cout //这一行可以直接写在语句里面
最后在linux里面,C语言对应于GCC编译器,而C++则应该对应于G++编译器,两者使用格式大同小异。
回复
支持
反对
使用道具
举报
显身卡
自由的大鱼
自由的大鱼
当前离线
积分
205
IP卡
狗仔卡
发表于 2006-4-7 16:24:13
|
显示全部楼层
时光倒退到1990年之前,这段代码完全正确。但现在是2006年了。
回复
支持
反对
使用道具
举报
显身卡
自由的大鱼
自由的大鱼
当前离线
积分
205
IP卡
狗仔卡
发表于 2006-4-7 16:24:18
|
显示全部楼层
时光倒退到1990年之前,这段代码完全正确。但现在是2006年了。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表