0
我正在将代码添加到使用card.io项目的现有iphone应用程序(由其他人编写)。这是我尝试的第一个改变。该应用程序编译和运行良好,没有任何更改,但后来当我尝试向我的xcode项目添加一个空的.cpp和.h文件时,我开始在名为CardIOMacros.h的不相关的obj-c头文件中获得语法错误。我正在使用xcode 7.2并编译iphone 4s设备。将空C++文件添加到xcode项目在obj-c头文件中创建语法错误
我经历了添加的.cpp和.h文件
- 右键单击项目导航项目节点上的过程
- 点击新文件
- 单击C++图标
- 键入文件名并选中创建头文件选项
- 选择我的项目目录中的子目录。
- 按在主菜单
下面的构建和运行按钮是在那里我得到错误的文件。错误显示在代码下面。
//
// CardIOMacros.h
// See the file "LICENSE.md" for the full license governing this code.
//
// CardIOLog is a replacement for NSLog that logs iff CARDIO_DEBUG is set.
#if CARDIO_DEBUG
#define CardIOLog(format, args...) NSLog(format, ## args)
#else
#define CardIOLog(format, args...)
#endif
@interface CardIOMacros : NSObject
+ (id)localSettingForKey:(NSString *)key defaultValue:(NSString *)defaultValue productionValue:(NSString *)productionValue;
+ (NSUInteger)deviceSystemMajorVersion;
+ (BOOL)appHasViewControllerBasedStatusBar;
@end
#define iOS_MAJOR_VERSION [CardIOMacros deviceSystemMajorVersion]
#define iOS_8_PLUS (iOS_MAJOR_VERSION >= 8)
#define iOS_7_PLUS (iOS_MAJOR_VERSION >= 7)
#define iOS_6 (iOS_MAJOR_VERSION == 6)
#define iOS_5 (iOS_MAJOR_VERSION == 5)
Compliler错误
/Users/michael/sdev/projectname/ios/card.io-iOS-20151210/Classes/CardIOMacros.h
/Users/michael/sdev/projectname/ios/card.io-iOS-20151210/Classes/CardIOMacros.h:14:1: Expected unqualified-id
/Users/michael/sdev/projectname/ios/card.io-iOS-20151210/Classes/CardIOMacros.h:18:1: Expected external declaration
/Users/michael/sdev/projectname/ios/card.io-iOS-20151210/Classes/CardIOMacros.h:18:4: C++ requires a type specifier for all declarations
/Users/michael/sdev/projectname/ios/card.io-iOS-20151210/Classes/CardIOMacros.h:18:15: Expected ';' after top level declarator
/Users/michael/sdev/projectname/ios/card.io-iOS-20151210/Classes/CardIOMacros.h:20:1: Expected external declaration
/Users/michael/sdev/projectname/ios/card.io-iOS-20151210/Classes/CardIOMacros.h:20:4: C++ requires a type specifier for all declarations
/Users/michael/sdev/projectname/ios/card.io-iOS-20151210/Classes/CardIOMacros.h:20:9: Expected ';' after top level declarator
/Users/michael/sdev/projectname/ios/card.io-iOS-20151210/Classes/CardIOMacros.h:22:1: Expected unqualified-id
h和cpp文件是空的,我不连#包括新的C++头文件中的任何其他文件。任何帮助,将不胜感激。
我该如何检查? – user1505520
Xcode项目通常在“支持文件”组下有一个“PROJECT_NAME-Prefix.pch”文件。编译器的行为就像该文件包含在每个源文件中一样。所以如果你在这个前缀头文件中有Objective-C代码(或者包含一个包含Objective-C的文件),那么即使是空的cpp也不能编译,因为Xcode会尝试用它的C++编译器从前缀头文件构建Objective-C代码。 –
就是这样。在其中一个-Prefix.pch文件中有“#import CardIOMacros.h”。我把它包装在“#ifdef __OBJC__ #endif”宏中,它工作正常!谢谢你,你真棒! – user1505520