c语言如何调用void函数返回值,C void函数,返回值

没有表达式的return语句:

void func(void) {

return;

}

在void函数中是完全合法的.带表达式的return语句的合法性取决于您正在使用的C语言的版本.

1990 C标准说:

A return statement with an expression shall not appear in a

function whose return type is void.

该标准的1999年和2011年版本都说:

A return statement with an expression shall not appear

in a function whose return type is void. A return

statement without an expression shall only appear in a function

whose return type is void.

这是一个约束,这意味着编译器必须为任何违反它的程序发出诊断(可能是非致命警告).

由于历史原因,C90允许返回语句在非void函数中没有表达式.前ANSI C没有void关键字,因此无法定义未返回值的函数.程序员会省略返回类型(默认为int)并简单地忽略它. C90规则允许这样的旧代码编译而不会出错.您仍然无法从非void函数返回值;如果调用者尝试使用(不存在)结果,则程序的行为是未定义的. 1999年的标准稍微收紧了规则.

你的程序的另一个问题是你在声明可见之前调用fun.根据C99及更高版本的规则,这是非法的(尽管编译器可能只是警告它).根据C90规则,这是合法的,但编译器将假定该函数返回int.您的程序的行为是未定义的,但您的void函数乐趣可能恰好表现为返回一个值,并且对它的调用可能恰好表现为使用该值.

C编译器对于某些错误往往相当宽松,因此旧代码(有时在第一个实际标准发布之前编写)不会被拒绝.但是你的编译器应该至少警告你关于return语句,可能还有关于无效调用的警告.你应该密切关注编译器警告;他们的待遇几乎与致命错误一样.您应该使用选项来增加编译器警告您的数量.如果您正在使用gcc,请使用-std = c90,-std = c99或-std = c11以及-pedantic来强制执行标准一致性.您可以添加-Wall-Wextra`以启用更多警告.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值