2016-07-27 7 views
1

Ich habe eine "MyConstants.h" Datei, die von mehreren Klassen importiert wird.Xcode beschwert sich über ungenutzte Funktionen, die verwendet werden

In dieser Datei habe ich Dinge wie:

static BOOL isIndexValid(NSInteger index) { 
    return ((index >=0) && (index < 200)); 
} 

Diese Funktion weitgehend von den Klassen importiert MyConstants.h. Trotzdem beschwert sich Xcode, dass diese Funktion und andere nicht verwendet werden.

Warum?

Antwort

3

Das Definieren einer static-Funktion (oder einer anderen Variablen) in einer Header-Datei bedeutet, dass jede Quelldatei, die diese Header-Datei importiert, eine eigene Kopie erhält.

Das ist nicht gut und worüber sich der Compiler beschweren wird (nicht jede Quelldatei verweist auf diese Funktion).

Machen Sie es static inline statt:

static inline BOOL isIndexValid(NSInteger index) { 
    return ((index >=0) && (index < 200)); 
} 
+0

Danke für den Tipp. Du warst fast da. Tatsächlich löste sich das Problem, wenn ich 'static inline' einsetzte. Just 'inline' machte das Problem schlimmer. Vielen Dank. Ich werde es akzeptieren, wenn SO mich lässt. – SpaceDog

+0

BTW Ich dachte, das statische Wort würde den Compiler zwingen, nur eine Version des Elements mit der gleichen Adresse im Speicher zu erstellen. – SpaceDog

+0

@SpaceDog Nur wenn Sie es direkt in die Quelldatei einfügen, nicht die Header-Datei. – Droppy

Verwandte Themen