2009-04-07 9 views
0

Je suis curieux de savoir quelles sont les raisons d'obtenir une erreur de compilation pour simplement importer un fichier d'en-tête. Si je le commente, tout se compile très bien - l'en-tête/l'implémentation de la classe que j'essaie d'importer dans un de mes UIViewController est passé le compilateur sans aucun avertissement. Cependant, dès que je l'inclue, j'obtiens une multitude d'erreurs.Objectif-C: Pourquoi ai-je une erreur de compilation lors de l'importation d'un fichier d'en-tête?

J'essaie d'utiliser l'application joignabilité d'Apple dans mon propre code, et en faisant quelque chose comme:

#import "Reachability.h" 

je reçois une tonne de:

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 

Il se plaint surtout en ce qui concerne:

static void ReachabilityCallback(SCNetworkReachabilityRef target,  SCNetworkReachabilityFlags flags, void *info); 
- (BOOL)isNetworkAvailableFlags:(SCNetworkReachabilityFlags *)outFlags; 
- (SCNetworkReachabilityRef)reachabilityRefForHostName:(NSString *)hostName; 
- (CFRunLoopRef)startListeningForReachabilityChanges:(SCNetworkReachabilityRef)reachability onRunLoop:(CFRunLoopRef)runLoop; 

Une idée pourquoi cela se produit uniquement lorsque j'essaie d'importer le fichier d'en-tête?

Répondre

10

Il semble que vous avez probablement besoin de

#import <SystemConfiguration/SystemConfiguration.h> 
+0

Ah dangit je ne sais pas comment j'ai raté ça, merci NilObject. – Coocoo4Cocoa

+0

Ne fonctionne toujours pas .. – Clement

2

Cette erreur est presque toujours causée par la non-définition du mot précédant le mot d'erreur (dans ce cas, SCNetworkReachabilityRef précédente target).

Par conséquent vous n'avez pas défini SCNetworkReachabilityRef et (il ressemble) tous les autres types "SC..." ainsi.

Je ne suis pas sûr que SystemConfiguration.hest inclus dans Reachability.h (si vous utilisez l'exemple de code de here). Ce code comprend à la fois SystemConfiguration/SCNetworkReachability.hetReachability.h.

0

sur iPhone, la version 1.5 de joignabilité d'Apple inclut le

#import <SystemConfiguration/SystemConfiguration.h> 

mais vous devez importer le cadre de SystemConfiguration dans votre application. Vous pouvez y accéder /System/Library/Frameworks/SystemConfiguration.framework

Questions connexes