包含glext.h时在xcode中编译c代码的奇怪问题

时间:2011-05-27 01:27:04

标签: c xcode opengl

我有这个简单的代码

#include <stdio.h>    
#include <OpenGL/glext.h>    
#include <OpenGL/gl.h>    

int main (int argc, const char * argv[])
{
    printf("Hello, World!\n");
    return 0;
}

如果我用“glext.h”注释掉这一行,它会编译并在xcode 4中正常运行,如果我取消注释该行,我会得到345个错误,其中大部分'预期*在*'之前... 到底是怎么回事?! gl.h和glext.h都在OpenGL框架内,但无论我是否包含它,我都会得到同样的错误。我尝试了GCC 4.2以及LLVM GCC 4.2和LLVM(在这种情况下是21个语义和解析错误)。

我确信我缺乏使用C的经验导致这一点但我很惊讶gl.h没有问题,但glext.h有。

即使我尝试通过gcc从命令行编译,我也会得到很多

/System/Library/Frameworks/OpenGL.framework/Headers/glext.h:3137: error: expected ‘)’ before ‘const’

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

这是glext.h的错误。如果查看该文件,您会看到它有一堆使用GLenum的定义,但GLenum未在该文件中的任何位置定义。因此,在包含glext.h之前,您需要包含一个定义GLenum的文件。最简单的方法是先包含gl.h而不是第二个:

#include <stdio.h>
#include <OpenGL/gl.h>
#include <OpenGL/glext.h>

答案 1 :(得分:2)

切换这两行:

#include <OpenGL/glext.h>    
#include <OpenGL/gl.h>    

它应该有用。