社区
C语言
帖子详情
为什么不报错?
treeroot
2006-03-13 01:19:16
我声明没有返回值的方法返回一个值竟然都可以,声明有返回值的也可以没有return语句
都只是一些警告而已,竟然可以编译运行,怎么回事,难道是编译器的问题(VC6.0)
void f1(){
return 1;
}
...全文
181
8
打赏
收藏
为什么不报错?
我声明没有返回值的方法返回一个值竟然都可以,声明有返回值的也可以没有return语句 都只是一些警告而已,竟然可以编译运行,怎么回事,难道是编译器的问题(VC6.0) void f1(){ return 1; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
anguofeng
2006-03-13
打赏
举报
回复
好像在6.0里的确是不报错
但是在gcc里会报错的
c++因为有函数重载的问题所以对函数的返回值和参数检查会特别严格
jixingzhong
2006-03-13
打赏
举报
回复
有警告就差不多了 ...
不过,C++相比于C还是有很多这方面的限制的 ...
cenlmmx
2006-03-13
打赏
举报
回复
..
goodluckyxl
2006-03-13
打赏
举报
回复
这个返回的问题告警和报error只要报信息就不关编译器的好坏
如果说完全没有反应的那可以定义为烂编译器
原因是这样的:
就那楼主的例子, 无返回值,在函数调用中R0-R7作为通用寄存器
会当作变量返回的地址区
你return 1 最坏的情况 编译器往r0写了数据作为返回值
但是当真正调用完毕后因为根据实际函数返回时检测出无参数类型
就不需要把R0当作参数返回
同理在有返回时没有return,最终会选择r0返回时 最坏情况里面的值非理想值而已
而编译器已经尽到责任
liweiswin
2006-03-13
打赏
举报
回复
警告 noname.c 5: void类型的函数不应有返回值在 f1 函数中
这是我在WINtc下编译的警告
ykzhujiang
2006-03-13
打赏
举报
回复
在C语言中这样做是可以的,但是在C++里面是不行的。
这是因为C语言中对于函数签名没有将参数包括在内,当该函数所在的编译单元被编译后,将会生成一个函数,名字类似_f1,对于其参数是不表示在其中的。这也是C语言中一个比较重要的问题,因为他导致了不安全性。并且在C语言中对于外部函数的检查比较松,比如一个函数void f(int),在另外一个文件中可以按照void f(float)等等的方法进行调用而不会报错,这样虽然编译可以通过,但是实际上是有问题的,会造成很难发现的错误。
然而在C++中,函数的签名包括了参数,这样前面的两个函数就会被编译成_f_int和_f_float的形式,这样程序就会有一个link错误,因为他们的函数签名时不一样的。
iamcaicainiao
2006-03-13
打赏
举报
回复
应该就是编译器的问题。 vc6.0真的很烂。
ouyh12345
2006-03-13
打赏
举报
回复
在偶的编译器(VC6SP6)里,有返回值的不返回则有错误
@ConditionalOnClass(A.class)为什么不
报错
但实际情况是spring通过这个机制正确的选择了具体的实现类,这是为什么呢? JVM ClassLoader理论回顾 java代码的生命周期 类生命周期 何时开始类的初始化 Java虚拟机规范中并没有进行强制约束什么情况...
变量在声明前调用,为什么var 不会
报错
,let 会
报错
?什么是变量提升?
1、变量在声明前调用,为什么var 不会
报错
,let 会
报错
? var 定义变量的时候,js是首先直接把变量声明到作用域的最顶部的,所以这个时候,全局都能找到这个变量 所以在定义之前调用这个变量,是不会
报错
的。所以...
java中输入小数为什么老是
报错
?求各位大神帮助!
有大神知道这里为什么
报错
吗?我输入整数一点问题都没有,但是每次输入小数都会报这个错误。
row_number where 为何会
报错
?mysql / hive中均
报错
为何会
报错
? 1 如果是row_number之后再在where中直接取排名,为何会
报错
? 比如: 1 2 3 4 5 6 7 select tag, uid, row_number()over...
python小白如何看
报错
?实用三步法
怎么正确看
报错
?拿一段代码来说事: # coding= utf-8 def rose(): return True #列表就是一个可迭代对象,定义一个列表 lists = [1, 2, 3, 4, 5, 6, 8, 77] #将函数和列表传进去 a = filter(rose, lists) ...
C语言
69,372
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章