AntTweakBar回调投掷" &#39 ;;'预期"方法之前的错误

时间:2015-05-01 00:54:50

标签: c++ user-interface opengl visual-studio-2012 glfw

在按照创建基本粒子系统的教程后,我开始实现AntTweakBar以获得基本的UI。一切顺利,一切顺利。但是一旦我开始添加回调函数,它开始变得有点乱,声称它在方法定义的中间抛出它:

  

智能感知:期待&#39 ;;'

有问题的方法是:

void GLFWCALL OnMouseRight(int glfwButton, int glfwAction)
{
    if( !TwEventMouseButtonGLFW(glfwButton, glfwAction) )   // Send event to AntTweakBar
    {
        if(glfwButton == GLFW_MOUSE_BUTTON_RIGHT)
            computeMatricesFromInputs();
        else
        // Event has not been handled by AntTweakBar
        // Do something if needed.
    }
}

错误显然是在名称OnMouseRight和以下括号之间弹出的。我该如何摆脱这个错误?我使用C ++在OpenGL中编写代码(使用GLFW和GLEW),我一直在遵循这个page on the AntTweakBar site的步骤。我已经查阅了大部分的GLFW文档而且找不到太多。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

导致错误的else之后缺少一条语句:

    if(glfwButton == GLFW_MOUSE_BUTTON_RIGHT)
        computeMatricesFromInputs();
    else
      // ^ no statement here

您可以添加分号作为Intellisense建议或空复合语句{}

    if(glfwButton == GLFW_MOUSE_BUTTON_RIGHT) {
        computeMatricesFromInputs();
    } else {
      // Event has not been handled by AntTweakBar
      // Do something if needed.
    }

答案 1 :(得分:0)

是的,经过漫长的一夜工作以解决这个问题并再次浏览GLFW的文档后,我发现问题在于宏GLFWCALL。 C ++将其视为一种独立的方法,因此忽略了实际的方法。 GLFW的文档解释了原因:

  

已删除GLFWCALL宏,该回调函数在Windows上使用__stdcall。 GLFW是用C语言编写的,而不是Pascal语言。删除此宏意味着GLFW的用户可以记住一件事,即需要用GLFWCALL标记所有回调函数。它还简化了DLLsDLL链接库的创建,因为不需要明确禁用@n入口点后缀。

在删除GLFWCALL并遵循@vitaut的建议时,我的程序现在可以正确处理正确的鼠标输入。