2011-05-27 40 views
3

時奇怪的問題,我有這個簡單的代碼與編譯C代碼在Xcode包括glext.h

#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有。

即使我嘗試從由海灣合作委員會的命令行,我有很多的

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

任何想法編譯?

+1

您是否嘗試切換gl.h和glext.h? – Dair 2011-05-27 01:36:38

+0

你是個天才!至少新我得到更有意義的錯誤。這個確切的代碼在Linux機器上工作(Ubuntu的)。爲什麼他們的訂單導致這種行爲 – Ali 2011-05-27 01:40:22

回答

3

這是一個與glext.h錯誤。如果你看看那個文件,你會發現它有一堆使用GLenum的定義,但是GLenum沒有在該文件的任何位置定義。因此,在包含glext.h之前,您需要包含一個定義爲GLenum的文件。最簡單的做法是首先包含gl.h而不是第二個:

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

開關使用這兩條線:

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

,它應該工作。