Saturday, August 7, 2021

not all control paths return a value

 struct Blah {};


#define TRY     {                                                \

                    bool e = true; /* really should be false. */ \

                    try                                          \

                    {                                            \



#define CATCH       }                                           \

                    catch (...)                                 \

                    {                                           \

                        try                                     \

                        {                                       \



#define END             }                                       \

                        catch(const Blah&)                      \

                        {                                       \

                            e = true;                           \

                        }                                       \

                    }                                           \

                    if (e)                                      \

                        throw;                                  \

                }


__declspec(dllexport) int (*g)();


__declspec(dllexport)

int f()

{

    TRY

        return g();

    CATCH

        return g();

    END

}



C:\s>cl /c /GX eh3.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29915 for x64

C:\s\eh3.cpp(36) : warning C4715: 'f': not all control paths return a value


Huh? They sure do.

No comments:

Post a Comment