| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 626 人关注过本帖
标题:在VC上运行出现个提醒错误,怎么解决啊
只看楼主 加入收藏
lupeifeng123
Rank: 2
等 级:论坛游民
帖 子:74
专家分:47
注 册:2012-12-13
结帖率:80%
收藏
已结贴  问题点数:5 回复次数:11 
在VC上运行出现个提醒错误,怎么解决啊
程序代码:
#include<stdio.h>
char cpystr(char *pss,char *pds)
{
  while((*pds++=*pss++)!='\0');
  return 0;
}

 main()
{
  char cpystr(char *pss,char *pds);
  char *pa="CHINA",b[10],*pb;
  pb=b;
  cpystr(pa,pb);
  printf("string a=%s\nstring b=%s\n",pa,pb);

}
在VC上运行出现个提醒错误,怎么解决啊
图片附件: 游客没有浏览图片的权限,请 登录注册
2013-01-07 15:16
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
main()
前加void  或者int  return 0;

DO IT YOURSELF !
2013-01-07 15:17
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:2 
警告内容不是写了吗

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-07 15:19
lupeifeng123
Rank: 2
等 级:论坛游民
帖 子:74
专家分:47
注 册:2012-12-13
收藏
得分:0 
加int不行  加void可以
还一个是程序改成:
程序代码:
#include<stdio.h>
char cpystr(char *pss,char *pds)
{
  while(*pds++=*pss++);
  return 0;
}

 main()
{
  char cpystr(char *pss,char *pds);
  char *pa="CHINA",b[10],*pb;
  pb=b;
  cpystr(pa,pb);
  printf("string a=%s\nstring b=%s\n",pa,pb);

}
也不会出现提醒错误,为什么这样改之后也不会出现提醒错误


一步一个脚印,贵在坚持。
2013-01-07 15:31
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
加 int  要加 return 0;的啊
说实话你的两段代码我的编译器都运行正常,没有报错;至于为什么改了之后就通过,诡异啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-07 15:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
这个警告是不影响运行滴

DO IT YOURSELF !
2013-01-07 15:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:2 
以下是引用lupeifeng123在2013-1-7 15:31:27的发言:

加int不行  加void可以
按照C标准,必须加int
按照C标准,在main内,如果退出分支没有显式的return,则默认return 0;

所以,换个不那么烂得离谱的C编译器吧
2013-01-07 15:45
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
以下是引用rjsp在2013-1-7 15:45:16的发言:

按照C标准,必须加int
按照C标准,在main内,如果退出分支没有显式的return,则默认return 0;

所以,换个不那么烂得离谱的C编译器吧
就是啊,这样的报错很坑人的,换吧

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-07 15:47
lupeifeng123
Rank: 2
等 级:论坛游民
帖 子:74
专家分:47
注 册:2012-12-13
收藏
得分:0 
回复 5楼 yaobao
哈哈 什么情况 我这是VC++6.0原英文版  运行的确实有提醒错误

一步一个脚印,贵在坚持。
2013-01-07 15:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
我来告诉你三件事

1。无论是C标准,还是C++标准,无论是过去,还是未来,main函数的返回类型都必须是int
   令人困惑的是,为什么写成void main或float main在某些编译器上不报错?
   那是因为某些编译器允许这么做(比如VC),但要知道这是非标准行为;某些编译器不检查(比如gcc),但要知道这样做出了事程序员自己负责。

2。C语言已经(1999年秋)禁止函数的默认返回类型
   为什么 main() { return 0; } 在某些编译器上能编译通过?
   那是因为古老的,已经被废弃的C标准曾经允许函数不显式的写出返回类型,在这种情况下,默认返回类型为int。但要记住,现在的C标准已经禁止掉这种行为,所以如果你的编译器合格的话,则要么给个错误要么给个警告。

3。C语言对main函数特殊规定,若退出分支无显式return,则默认return 0
   举个例子
int main()
{
    if( ... )
        return 1;
    else
        ;
}
则相当于
int main()
{
    if( ... )
        return 1;
    else
        return 0;

    return 0;
}
同样,前提是你的编译器不能太老旧,老旧得连上个世纪的C99标准都还不支持。
2013-01-07 16:00
快速回复:在VC上运行出现个提醒错误,怎么解决啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027500 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved