注册 登录
编程论坛 C++教室

请问这个程序错在哪里

nothingness 发布于 2013-05-22 13:30, 658 次点击
请问这个程序错在哪里
#include <cassert>
using namespace std;
int main(){
   int i=100;
   assert(i!=100);
}///:~

调试显示的错误是
error C2871: 'std' : does not exist or is not a namespace
 warning C4508: 'main' : function should return a value; 'void' return type assumed
请问这个函数需要返回值吗,另外‘std’又有什么错误?
8 回复
#2
rjsp2013-05-22 13:51
using namespace std; 就是要引入名字空间std
但之前并没有名字空间std呀

按照C++标准,assert并不在名字空间std中
所以,将using namespace std;这一句去掉吧
#3
rjsp2013-05-22 13:58
而对于 warning C4508: 'main' : function should return a value; 'void' return type assumed
这说明你用的编译器太古老了,对C++标准支持得太差。

C++标准如是说“…… in main ……If control reaches the end of main without encountering a return statement, the effect is that of executing
return 0;”
#4
邓士林2013-05-22 13:59
楼上讲的不错,命名空间么有了
#5
nothingness2013-05-23 15:47
感谢楼上两位大神,我明白了,谢谢
#6
nothingness2013-05-23 15:50
回复 2楼 rjsp
请问一下,我用的是vc++6.0,要是编译器太古老的话,应该换软个件吗
#7
rjsp2013-05-24 08:30
回复 6楼 nothingness
VC6.0 即 VC98,是在1998年发布的,是在1998之前开发的,所以它肯定不可能支持CPP98标准。
后来陆续发布了一些补丁,一直到VC6SP6,基本上支持了CPP98标准的大部分。

而对于C++标准,在1998年的CPP98标准之后,还有2003年的修订版CPP2003,以及最新的CPP11标准。
你最好找个能支持最新C++标准的编译器,如果没有,起码应该找个能支持CPP2003标准的编译器。

如果你用的是WindowsXP,建议你用 VC2008 或 最新的MinGW
如果你用的是Windows8,建议你用 VC2012 或 最新的MinGW
如果你用的是Linux,当然毫无疑问是用 GCC 了
其它还有 clang 等
#8
nothingness2013-05-24 20:23
回复 6楼 nothingness
明白,谢谢你,多谢指导
1