dhe*_*ein 1 c c99 return-type undefined-behavior
#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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是使用gcc 4.3生成NOT错误的代码的代表代码
但它应该,不应该吗?
我的意思是该函数的两种情况都有返回类型指针.
在身体的最后,没有任何回报.那不合法吗?但代码编译,更有趣的是:当函数被调用并运行到函数体的末尾时,它返回0x80808080.
这可能是由我的代码中未定义的行为引起的吗?
或者这仅仅是一个gcc bug?
或者我可以做一些不同的错误吗?
在C中,return语句是可选的,即使对于返回类型不是的函数也是如此void.
如果调用者尝试读取函数的返回值并且函数未返回任何内容,则行为未定义.
在C99中,如果main函数没有return语句,则到达}函数就好像有一个return 0;语句.
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |