2011-04-06 19 views
0

(iPhone)拉我的頭髮只是試圖聲明和設置一個愚蠢的變量。這裏的代碼:無法初始化GLfloat,'衝突類型'錯誤

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)); 

我得到的錯誤,「初始值元素不是常量」。

真奇怪的是,這段代碼在一個方法內工作的很好。我將其移出該方法,現在失敗了。這裏發生了什麼?

+0

你是否應該在你的陳述結尾有雙))? – 2011-04-06 21:34:55

+0

'size'是一個常用的變量名稱,所以可能會有一個'size'實例變量或者其他當前作用域中的其他名稱(我曾發現這會導致過去的「衝突類型」錯誤)。嘗試重命名它'calculateSize'或其他東西,看看是否刪除錯誤。 – 2011-04-07 14:09:38

回答

1

在處理全球範圍時,語句只能分配爲常量字面值。

// 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)); 
0

我猜你可以在執行語句之前使用類似

#define kPosun 44.0
的東西。