2012-05-16 24 views
1

我已經宣佈在Constants.h文件我的項目的這個小傢伙:嘗試使用EXTERN INT,告訴它現在是一個指針

extern int *exitDirection;

然後,我把他帶到一個整數。在這種情況下,它是881,這是一個非常好的數字。

現在,我想在其他地方使用他在switch語句項目:

switch (exitDirection) { 
     case kExitDirectionLeft: 
      // Have him spawn on the right of the next level. 
      break; 
     case kExitDirectionRight: 
      // Have him spawn on the left of the next level. 
      break; 
     default: 
      break; 
    } 
} 

我報錯可愛的錯誤信息"Statement requires expression of integer type (int * invalid),我認爲我給它一個指針方式到一個整數,而不是一個實際的整數。 kExitDirectionLeft只是#define'作爲881,我試着用實際數字切換它,沒有快樂。也嘗試切換INT到NSNumber或NSInteger,同樣的錯誤。

爲什麼我不能在這種情況下使用這個外部定義的整數?我怎樣才能使它工作?任何幫助感謝!

修正它,但這樣做我現在觸發這個蘋果的Mach-O接頭(Id)的錯誤..

"_exitDirection", referenced from: 
    -[GameplayLayer positionHeroMale] in GameplayLayer.o 
    -[GameCharacter checkAndClampSpritePosition] in GameCharacter.o 
    -[GameplayLayer positionHeroMale] in GameplayLayer.o 
    -[GameCharacter checkAndClampSpritePosition] in GameCharacter.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

任何想法?

+2

你其實根本是什麼告訴它在內存位置881 :) – deanWombourne

回答

4
extern int *exitDirection; 

在這裏,你居然宣稱指針爲int,你可能(取決於你如何創建它與設定值的話)只需要簡單的INT在此:

extern int exitDirection; 
該宣言

你也只是告訴編譯器exitDirection是在當前作用域之外的某處創建的,變量本身不會被創建。你需要在某個實現文件中實際創建(也可能是一些初始值設置爲它),例如:

// Constants.m 
int exitDirection = 0; 
+0

這是正確的指向整數。好像我現在已經觸發了蘋果的Mach-O接頭(Id)的錯誤,但.. ' 「_exitDirection」,從引用: - [GameplayLayer positionHeroMale在GameplayLayer.o - [GameCharacter checkAndClampSpritePosition在GameCharacter.o - [GameplayLayer positionHeroMale]在GameplayLayer.o中 - GameCharacter.o中的[GameCharacter checkAndClampSpritePosition] ld:找不到架構i386的符號 clang:錯誤:linker命令失敗,退出代碼1(使用-v查看調用) ' 任何想法? – Luke

+0

我目前沒有constants.m文件。如果我嘗試添加一個,那麼我會遇到有關缺少@interface的錯誤,以便與實現一起使用 - 解決方法是什麼? – Luke

+0

你可能已經爲你創建了「@implementation Constants ...」代碼塊 - 你可以刪除它,只留下int exitDirection = 0;在文件中(還##「Constants.h」) – Vladimir

1

您聲明exitDirectionint指針,你需要switchint。要麼改變exitDirectionint或做以下

switch(*exitDirection) 
{ 
    ... 
} 
相關問題