我有这个简单的代码

#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’

有任何想法吗?

最佳答案

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

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

关于c - 包含 glext.h 时在 xcode 中编译 c 代码的奇怪问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6146896/

10-12 23:29