【发布时间】: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 文件是否正确添加到使用您的前缀标头的目标中?
标签: c++ objective-c cocoa xcode ios