无法初始化GLfloat,“冲突类型”错误

时间:2011-04-06 21:24:10

标签: iphone opengl-es initialization

(iPhone)只是试图宣布并设置一个愚蠢的变量。这是代码:

const GLfloat zNear = 0.01, zFar = 1000.0, fieldOfView = 60.0; 
GLfloat size;
size = zNear * tanf(DEGREES_TO_RADIANS*fieldOfView / 2.0));

给我错误“'尺寸'的冲突类型”。

如果我这样写它:

const GLfloat zNear = 0.01, zFar = 1000.0, fieldOfView = 60.0; 
GLfloat size = zNear * tanf(DEGREES_TO_RADIANS*fieldOfView / 2.0));

我收到错误,“初始化元素不是常数”。

真正奇怪的是,这个代码在方法内部工作正常。我把它移出了方法,现在它失败了。这是怎么回事?

2 个答案:

答案 0 :(得分:1)

global-scope 处理时,语句只能分配给常量文字。

// At global scope
int a = 10 ; // fine
int b = a ;  // Not allowed
b = a ;      // Not allowed
b = 100 ;    // fine

const int aa = 10 ;  // fine
const int bb ;
bb = aa ;   // Not allowed

解决方案是#define。试试这个 -

#define zNear 0.01
#define zFar 1000.0
#define fieldOfView 60.0

GLfloat size;
size = zNear * tanf(DEGREES_TO_RADIANS*fieldOfView / 2.0));

答案 1 :(得分:0)

我猜你可以在实现声明之前使用类似

#define kPosun 44.0 
的内容。