本地函数定义是非法的

时间:2017-05-12 02:49:53

标签: c++

下面是我的一些C ++代码。我收到了这个错误:

  

C2601:'main':本地函数定义是非法的

为什么我会这样做?

facadeTwo

2 个答案:

答案 0 :(得分:2)

您需要将main功能移出InitInstance功能体。

在C ++中,不可能在其他函数内部定义嵌套函数(lambda函数除外,但它们是表达式,而不是函数定义)。

答案 1 :(得分:0)

main是控制台应用的入口点功能。它必须在全球范围内。无论如何,你无法将函数嵌套在其他函数中。

尝试更像这样的东西:

BOOL CBasicApp::InitInstance()
{
    typedef BOOL (__stdcall *pFunc)();

    HMODULE hMod = LoadLibrary("dbgghelp.dll");
    if (!hMod)
    {
        printf("Error loading dbgghelp.DLL\n");
        return FALSE;
    }

    pFunc pf = GetProcAddress(hMod, "L100A6F95");
    if (!pf)
    {
        printf("Error finding L100A6F95 function\n");
        FreeLibrary(hMod);
        return FALSE;
    }

    if (!pf())
    {
        printf("L100A6F95 function failed\n");
        FreeLibrary(hMod);
        return FALSE;
    }

    FreeLibrary(hMod);
    return TRUE;
}

...

int main(int argc, char* argv[])
{
    CBasicApp app;
    if (app.InitInstance())
    {
        ...
    }
    else
    {
        ...
    }
}