过剩的过剩问题包括和类型说明符

时间:2013-03-01 20:28:23

标签: c++ opengl glut glew

我目前正致力于游戏开发课程的最终编程项目,并选择将C ++和OpenGL用于程序的3D渲染方面(尽管事实上我对它没什么经验)。

我正在使用它直到现在绝对没有严重错误,然后离开了几天。但是当我回来时,我开始使用我使用过的少量GLfloat变量来获得各种“C4430 - Missing Type Specifier”错误。

这是我以前的定义,直到我今天重新加载才能正常工作:

    #include <gl/glew.h>
    #include <gl/glut.h>

    ... Other variable and object definitions

    const GLfloat DEFAULT_X = -5.0f;  //C4430: missing type specifyer on all 3 lines and
    const Glfloat DEFAULT_Y = -4.0f;  //C2146: syntax error : missing ';' before identifier 'DEFAULT_Y' on this line only
    const GLfloat DEFAULT_Z = -20.0f;

    GLfloat viewX = DEFAULT_X; //This line is fine
    GLfloat viewY = DEFALUT_Y; //Resulting C2065: Undeclared identifyer
    GLfloat viewZ = DEFALUT_Z; //on both these lines

为了解决这个问题,我开始改变#includes(也许是一种愚蠢的方法,但此时我很困惑)并发现添加了Windows.h和gl / GL.h,正如一些人所建议的那样,除了其中一个问题外,其他问题都已解决。

    #include <Windows.h>
    #include <gl/GL.h>
    #include <gl/glew.h>
    #include <gl/glut.h>

新问题是在gl / glew.h之前尝试使用gl / GL.h会抛出错误“C1189:gl.h包含在glew.h之前”,因为在猜测中,glew包含gl.h本身。但是任何改动都会带来以前的类型指定错误。

令我困惑的是,如果glew包含GL.h,那么这些类型说明符也不会包括在内吗?我将继续进行方法编码而无需暂时进行测试,但需要能够测试我即将完成的工作。有人可以提供帮助或建议吗?

1 个答案:

答案 0 :(得分:2)

#include <Windows.h>
#include <gl/GL.h>
#include <gl/glut.h>
#include <gl/glew.h>

这是包含这些标题的错误顺序。

GLEW(或者你正在使用的任何OpenGL加载器)总是。你从不包含gl.h一个OpenGL加载程序头文件;你只需要包含他们的(glew.h)。它出现在OpenGL或OpenGL工具的所有其他标题之前。

接下来是FreeGLUT的标题。之后......你根本不应该包括window.h,除非你正在做一些特定于Windows的代码。如果你是,你可以在FreeGLUT之后加入它。