2011-04-15 58 views
0

爲什麼.pch中的#define語句不能被.mm文件識別?#define在.mm文件中未識別的預編譯頭中

嘗試引用宏時導致「使用未聲明的標識符」和「未在此範圍內聲明」。

P溝道看起來是這樣的:

#import <Availability.h> 

#ifndef __IPHONE_3_0 
#warning "This project uses features only available in iPhone SDK 3.0 and later." 
#endif 

#ifdef __OBJC__ 
#import <Foundation/Foundation.h> 
#import <UIKit/UIKit.h> 
#endif 

#ifdef DEBUG 
#define dNSLog(...) NSLog(@"%s %@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__]) 
#else 
#define dNSLog(format, ...) 
#endif 
+0

你可以編輯你的問題,粘貼你的.pch文件的內容? – 2011-04-15 23:59:06

+0

乍一看,你的前綴頭文件看起來沒問題,但是我在'#ifdef __OBJC__'裏面放了'#ifdef DEBUG',因爲你使用'NSString',我假設'dNSLog )'是給你錯誤的宏,你能檢查有問題的.mm文件的預處理器輸出,看看是否使用了前綴頭文件嗎?另外,是否有問題的.mm文件被正確添加到使用的目標中你的前綴頭部? – 2011-04-16 00:50:41

+0

感謝您的幫助! – gmcerveny 2011-04-18 20:03:58

回答

3

我有同樣的問題,清理並沒有解決它。

關閉和重新啓動的Xcode 4一切都好後, 如果能幫助別人......

+0

這正是我找到的解決方案。 – gmcerveny 2011-04-30 04:48:18

0

原來的Xcode 4實際上沒有清潔的構建。 :(