#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 のバグですか?
それとも、何か違うことをしてもいいですか?