2011-04-15 31 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实际上没有清洁的构建。 :(