在VS2010里快要疯掉的hello world

现在2点10.难得有一天能整到这个时候睡了……拜C++所赐。

因为最近在学面向对象的C++语言,才开了个头。准备写我此生第一个C++程序,当然仍旧是hello world。于是我写了下面几行代码:

#include<iostream>
using  namespace  std;
void  main(){
    cout<<"hello world"<<endl;
}

按照C语言理应完美运行的,一切正常后缀是cpp,工程建的没问题。但是放在VS2010下面就是出错。编译没问题,已运行就出了错误弹窗,提示“无法启动程序”,“拒绝访问”如下图(其实之前还有一个类似的错误弹窗提示的是无法启动cmd.exe):

VS2010 - 出错界面

当然,那里面那些“奇怪”是我给起的名字而已,因为太奇怪——把这个代码放到VC6下编译运行一切正常。

这让我有点恼火,而且输出不了字符串,但cout<<a+b;却是可以输出的。在网上查也是大多数人向白痴一样的回答,没一个能解决问题。于是我开始重装VS2010。VS2010大的不行,重装花了一个多小时,装好再试,依旧老问题。

但是至少我明白不是VS文件哪有损坏了。我想一个hello world都整不清楚还怎么学C++……后来在网上无意间看到有人的程序后面加了一句:

system("pause");

让我豁然开朗。因为刚才试验的时候我发现,当输出cout<<a+b;的时候,cmd窗体是一闪而过的(我按得是Ctrl+F5,在C语言里是可以停留在结果),而system("pause");作用就是让它停止。于是我拿来试,把这句话加到结尾,成功运行。

虽然不知道为什么,但解决了一个问题,也算今天熬到这么晚的收获把。

赞赏

喜欢这篇文章,扫码和我成为赞友!

评论

small apple 回复

飘过了........看到你们的代码了.......大家一定继续啊

qingyue 回复

#iinclude <stdio.h>
void main()
{
printf("hello");
}
我直接在VS2010里这样写了。保存为×.c格式了。编译不通过:(

落沐萧萧 回复

@qingyue:编译不通过很正常。
2010里main函数的返回值应该是int。void是错的。

may 回复

其实vc++和c++是有区别的,vs的编译器支持void main,但是标准的规范写法是int类型的,然后return 0;极不推荐用vc一类的ide学习,system(“pause”)是调用dos系统的pause命令(pause.exe),显然,只有win平台可用,所以推荐使用getch()来暂停。

落沐萧萧 回复

@may:int 和 void 不是关键把……不用VC用什么呢? VS也不至于连写hello world也出问题把……不懂C++了

may 回复

@落沐萧萧:int, void和终端窗口暂停时没关系,但是最好按照规范来,c++ primer里面也说了main函数必须有返回值。有没有问题是和编译器有关系的。推荐gcc平台,vs编译器会养成许多“坏习惯”。

落沐萧萧 回复

@may:也是。谢谢指导了。

河南政府招商 回复

c++,我的神呀,都是大神级别的。据说这个很难得

落沐萧萧 回复

@河南政府招商:学过c就觉得还好了。

周超 回复

叶轮给煤机 回复

不错支持一下了

captcha