gpt4 book ai didi

c - 不应该是一个具有返回类型但在主体中没有返回的函数是错误的吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:26 25 4
gpt4 key购买 nike

#if _OWN_DEBUG_LEVEL > 0

void *GetPostArgs(TYPE *Fcgx_Request, FILE *fpDebugPointer)

#else

void *GetPostArgs(TYPE *Fcgx_Request)

#endif
{
...

if (...)
{
return NULL;
}

...

do
{
...

if (...)
{
return NULL;
}

...
}
while (...);

if (...)
{
return NULL;
}
}

这是使用 gcc 4.3 不会产生错误的代码的代表代码

但它应该,不应该吗?

我的意思是函数的两种情况都有返回类型指针。

在主体的末尾没有任何返回。那不合法是吗?但是代码可以编译,更有趣的是:当函数被调用并运行到函数体的末尾时,它返回 0x80808080

这可能是由我的代码中未定义的行为引起的吗?

或者这只是一个 gcc 错误?

或者我可以做一些不同的错误吗?

最佳答案

在 C 中,return 语句是可选的,即使对于返回类型不是 void 的函数也是如此。

如果调用者试图读取函数的返回值而函数没有返回任何内容,则行为未定义。

在C99中,如果main函数没有return语句,到达函数的就好像有一个return 0;声明。

关于c - 不应该是一个具有返回类型但在主体中没有返回的函数是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com