1
#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 のバグですか?

それとも、何か違うことをしてもいいですか?

4

1 に答える 1