.mm 文件中无法识别的预编译头文件中的#define
Posted
技术标签:
【中文标题】.mm 文件中无法识别的预编译头文件中的#define【英文标题】:#define in precompiled header not recognized in .mm files 【发布时间】:2011-04-15 23:36:22 【问题描述】:为什么 .mm 文件无法识别 .pch 中的 #define 语句?
尝试引用宏时导致“使用未声明的标识符”和“未在此范围内声明”。
Pch 看起来像这样:
#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
【问题讨论】:
你能编辑你的问题并粘贴你的 .pch 文件的内容吗? 乍一看,您的前缀标题看起来不错。不过,我会将#ifdef DEBUG
放在 #ifdef __OBJC__
中,因为您使用的是 NSString
。我假设dNSLog()
是给你错误的宏。您是否能够检查有问题的 .mm 文件的预处理器输出并查看是否使用了前缀标头?此外,有问题的 .mm 文件是否正确添加到使用您的前缀标头的目标中?
【参考方案1】:
我也遇到了同样的问题,打扫也没解决。
关闭并重新启动 Xcode 4 后一切正常。 如果这可以帮助某人...
【讨论】:
这正是我找到的解决方案。【参考方案2】:事实证明 Xcode 4 实际上并没有清理构建。 :(
【讨论】:
以上是关于.mm 文件中无法识别的预编译头文件中的#define的主要内容,如果未能解决你的问题,请参考以下文章