期待一个“;”在陌生的地方

expected a ";" on strange place

我在这里发布了完整的代码,因为 myb 我制作了错误的结构或将某些功能放在了错误的地方。但是为什么我在 LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) 上收到错误对我来说没有意义,而且放置也没有意义;在它之后。如果有人有时间检查代码并给我建议如何解决这个问题或以更简单的方式实现这个问题,我将非常感激。

error

  int main()
    {
        int togler;
        int g;
        HHOOK MouseHook;
        HHOOK hhkLowLevelKybd;
        bool SupressMouseHook = false;
        bool click = false;
        LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
        {
            BOOL eatMouseStroke2 = false;
            if (!SupressMouseHook) {
                BOOL eatMouseStroke = false;
                if (togler == 1) {
                    if (wParam == WM_LBUTTONDOWN) {
                        click = true;
                    }
                    else if (wParam == WM_LBUTTONUP) {
                        click = false;
                    }
                }
                return(eatMouseStroke ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
            }
            else {
                BOOL eatMouseStroke = false;
                return(eatMouseStroke ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
            }
            return(eatMouseStroke2 ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
        }
        MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, GetModuleHandle(NULL), 0);
        CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)clicker, NULL, NULL, NULL);

    }

您应该将 MouseHookProc 定义移到 main 之外。 C++ 不允许在其他函数内部定义函数。

除此之外,(LPTHREAD_START_ROUTINE)clicker也是错误的,这里不需要强制转换,而是clicker函数必须有正确的签名,void down();实际上是一个函数声明,不是调用。