爲宏

2012-08-30 70 views
1

在我的應用我正在執行以下使用未聲明的標識符的步驟中創建.h文件中說爲宏

1),GlobalMacros.h

在GlobalMacros.h

#define IP_ADDR @「SERVER_IP」 

2)在我的應用.pch文件

import 「GlobalMacros.h」 

然後在其他類的其他類中,我在iOS 01中使用此IP_ADDR宏個5.0沒有問題,但在IOS> 5.0我得到一個錯誤使用未聲明的標識符的IP_ADDR

+0

在.pch文件中寫下這行#define IP_ADDR @「SERVER_IP」。那麼它會正常工作 –

+1

你是否在你的源代碼中使用''''和'''引號,或者你是否在一個編輯器中輸入你的問題,而這個編輯器能夠將正常引號自動轉換爲相反的引號? – dasblinkenlight

+0

命名空間你的東西。 GlobalMacros.h是一個可怕的名字。可能已經在其他地方使用過。 IP_ADDR也很愚蠢。認真。你應該對字符串常量使用完全不同的技術。像實際的字符串常量。 WTF – uchuugaka

回答

3

原因是這些中的一個:

  • .pch file有一些#if測試條件包括#import "GlobalMacros.h"如果構建版本低於iOS5的

  • GlobalMacros.h文件有它的條件#if

  • 一些報頭或源文件中有一個#if聲明,在小於的iOS5項目取消定義IP_ADDR

  • ,所述.pch文件使用不同的GlobalMacros.h文件,而不是具有IP_ADDR限定在所述一個它

編輯:我要補充一點,在Xcode4.5,我包括在我.pch文件這一全球性的宏文件。出於某種原因,預處理器會感到困惑,並且源代碼編輯器在許多文件中顯示未知的宏,這似乎是隨機的。我在做什麼是因爲我收到錯誤,將全局宏文件添加到受影響的文件。

+0

我在'.m'文件中定義了我的宏。這解決了我的問題 –

+1

@亞歷山大如果你需要在其他文件中使用該MACRO,把它放在每個文件中是一個可怕的解決方案。在這種情況下,您應該將其放在.pch文件中,或者包含需要宏的global.h文件中。 –

+2

爲什麼不命名空間你的東西。 GlobalMacros是頭文件名的可怕解決方案。 – uchuugaka