2012-05-05 16 views
9

Prima di tutto, ho davvero usato i metodi Objective-c nella mia programmazione. Ho deciso di fare un paio di calcoli matematici rapidi come funzioni c e poi ho finito per averne bisogno per più classi. Quindi ho bloccato le funzioni c in un file .h separato. Funziona bene fino a quando non cerco di importare il file .h in più di una classe. Quindi viene visualizzato questo errore:Duplicato Simbolo Errore da funzioni C in Objective-C

Come posso utilizzare una funzione c in più di una classe senza questo errore di collegamento. Ho provato solo a definire le funzioni nelle classi in cui ho bisogno, ma sembra che anche se sono classi diverse, ottengo questo errore se il nome della funzione è lo stesso. Probabilmente sono pazzo qui, ma alcuni aiutano a capire sarebbe fantastico.

risposta

14

È necessario inserire dichiarazioni nel file .h, renderle esterne e spostare le definizioni in un file .c o .m.

Da questo

myfunctions.h

int max(int a, int b) { 
    return a>b ? a : b; 
} 

passare a questo:

myfunctions.h

extern int max(int a, int b); // declaration 

myfunctions.c

int max(int a, int b) { 
    return a>b ? a : b; 
} 
+1

+1 ma perché rendere la dichiarazione della funzione esterna? – MByD

+0

@BinyaminSharet Hai ragione, continuo a dimenticare che 'extern' è completamente opzionale sulle dichiarazioni :) – dasblinkenlight

+0

Proprio quello che dovevo sapere. Grazie! – daveMac

Problemi correlati