我很好奇为什么原因可能是因为只是导入头文件而导致编译错误。如果我发表评论,一切都编译得很好 - 我试图导入我的一个UIViewController的类的头/实现得到了传递编译器而没有任何警告。但是,只要我加入它,我就会遇到很多错误。
我正在尝试在自己的代码中使用Apple的Reachability应用程序,并执行以下操作:
#import "Reachability.h"
我得到了很多:
error: syntax error before 'target'
error: syntax error before 'SCNetworkReachabilityFlags'
error: syntax error before 'SCNetworkReachabilityRef'
error: syntax error before 'SCNetworkReachabilityRef'
fatal error: method definition not in @implementation context
这主要是抱怨:
static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *info);
- (BOOL)isNetworkAvailableFlags:(SCNetworkReachabilityFlags *)outFlags;
- (SCNetworkReachabilityRef)reachabilityRefForHostName:(NSString *)hostName;
- (CFRunLoopRef)startListeningForReachabilityChanges:(SCNetworkReachabilityRef)reachability onRunLoop:(CFRunLoopRef)runLoop;
知道为什么只有在我尝试导入头文件时才会发生这种情况吗?
答案 0 :(得分:10)
听起来你可能需要
#import <SystemConfiguration/SystemConfiguration.h>
答案 1 :(得分:2)
该错误几乎总是由错误词之前的单词的非定义引起的(在这种情况下,SCNetworkReachabilityRef
之前是target
。
因此,您还没有定义SCNetworkReachabilityRef
和(看起来像)所有其他"SC..."
类型。
我不确定SystemConfiguration.h
中是否包含Reachability.h
(如果您使用的是here中的示例代码)。
该代码包含SystemConfiguration/SCNetworkReachability.h
和 Reachability.h
。
答案 2 :(得分:0)
在iPhone上,Apple的Reachability的1.5版本包括
#import <SystemConfiguration/SystemConfiguration.h>
但您需要在应用中导入SystemConfiguration框架。你可以在那里得到它/System/Library/Frameworks/SystemConfiguration.framework