C函数的隐式int返回值

我已经用谷歌搜索,但似乎找不到这个简单问题的答案。


在旧版代码库上工作(最近移植到Linux,然后慢慢更新到新的编译器),我发现很多


int myfunction(...)

{

// no return...

}

我知道函数的隐式返回类型是int,但是没有指定返回时的隐式返回值是什么。我已经测试并获得0,但这仅适用于gcc。这个编译器是特定的还是标准定义为0?


编辑:12/2017调整可接受的答案基于它引用了该标准的最新版本。


慕标5832272
浏览 602回答 3
3回答

qq_遁去的一_1

即使函数的返回类型不是,return语句也不会在函数末尾强制执行void。不需要诊断,并且它不是未定义的行为。示例(定义的行为):int foo(void){}int main(){    foo();}但是读取的返回值foo是未定义的行为:int bla = foo();  // undefined behavior从C标准:(C99,6.9.1p12)“如果到达终止函数的},并且调用者使用了函数调用的值,则该行为未定义。”该main函数是该规则的例外,就像}到达该规则一样,main就好像有一条return 0;语句一样。
打开App,查看更多内容
随时随地看视频慕课网APP