Logo

Objective-C, Xcode und Cocoa Tutorial


 

 

KAPITEL 11

 

DER PRÄPROZESSOR

Der Präprozessor beinhaltet die Hilfsmittel, die Ihnen ermöglichen Programme zu erstellen, die einfacher zu entwickeln, lesen, zu modifizieren und in andere Systeme zu transferieren sind. Den Präprozessor kann man auch nutzen um buchstäblich die Objective-C Sprache an Ihren eigenen Programmierstil anzupassen. Der Präprozessor ist ein Teil der Objective-C Übersetzung, der spezielle Befehle registriert die in ein Programm eingebracht werden. Einige dieser Befehle werden im folgenden erläutert. Wie der Name schon sagt, führt der Präprozessor diese Befehle erst aus, bevor er das eigentliche Objective-C Programm ausführt. Ein Präprozessor Befehl erkennt man an der Raute (#) die vor dem Befehl gesetz wird. Präprozessor Befehle haben eine etwas andere Syntax als normale Objective-C Befehle.

 

Der #define Befehl

Der hauptsächliche Nutzen dieses Befehls ist es, symbolische Namen zu Programm Konstanten hinzufügen. Das statement:

#define TRUE 1

definiert den Namen TRUE und macht in äquivalent mit dem Wert 1. TRUE kann in Folge überall dort verwendet werden wo die Konstante 1 ansonsten verwendet würde. Wann immer dieser Name auftritt wird der Wert 1 automatisch in das Programm des Präprozessors eingefügt. Z.B. wenn Sie folgendes Objective-C Statement schreiben:

gameOver = TRUE;

dann wird der Wert von TRUE zu gameOver gesetzt. Sie müssen nicht Rücksicht nehmen auf den aktuellen Wert den Sie für TRUE definiert haben, aber weil Sie wissen dass Sie den Wert 1 zugewiesen haben, das vorige stattement wird den Effekt haben, dass gameOver der Wert 1 zugewiesen wird.


Das statement:

#define FALSE 0

definiert den Namen FALSE und macht ihn im weitern Verlauf äquivalent mit dem Wert 0. In dem Sinn wird mit

gameOver = FALSE;

der Wert von FALSE zu gameOver zugewiesen. Das statement

if ( gameOver = = FALSE)
....

vergleicht den Wert von gameOver mit dem definierten Wert von FALSE. Ein auf diese Art und Weise definierter Wert ist KEINE Variable (nachsatz von mir: es ist eine Konstante: TRUE hat immer 1 im folgenden Programm, und FALSE immer 0 - dieser Wert wird nicht veränderlich und ist deshalb konstant). Die spezielle Syntanx liegt darin, dass nach dem #define Statement kein Satzzeichen folgt, sondern der Name und dann der Wert. Beendet wird das Ganze ohne Komma oder sonstiges Satzzeichen.

#define Statements werden oft im Laufe eines Programmes gesetzt, nach #import oder #include Statements. Das ist aber nicht nötig: sie können irgendwo im Programm gesezt werden. Viele Programmierer legen sie in header Dateien ab, damit Sie von mehreren Dateien genutzt werden können. Ein anderes Beispiel wäre jenes: stellen Sie sich vor Sie wollen zwei Methoden beschreiben um die Fläche und den Umfang eines Kreises zu bestimmen. Beide müssen dann die Konstante pi - als bekannteste aller Konstanten - verwenden. Es macht in einem solchen Fall Sinn, diese zu Beginn des Programms definieren. Sie würden also in Ihr Programm schreiben:

#define PI  3.1415

Dann können Sie es in Ihren Methoden verwenden. (Die setzt voraus, dass die Circle Klasse eine Instanz Variable Namens radius hat). So z.B.:

- (double) flaeche
{
return PI * radius * radius;
}
- (double) umfang
{
return 2.0 * PI * radius;
}
Der einfache Vorteil ist, dass Sie einen Namen verwenden können, anstatt jedesmal sich an bestimmt Konstanten erinnern zu müssen - wie bereits zu Beginn gesagt: der Präprozessor ist ein angenehmes Hilfsmittel, das es lohnt einzusetzen. Auch noch von Vorteil ist, dass Sie diese Konstante jederzeit ändern können, wenn Sie z.B. draufkommen, dass sie falsch ist, und müssen es dann nur einmal tun. Stellen Sie sich also vor Sie haben pi falsch in Erinnerung und schreiben überall wo Sie diese Konstante benutzen die falsche Zahl, so müssen Sie alles einzeln auswechseln. Bestimmt ist Ihnen schon aufgefallen, dass derartig definierte Variablen groß geschrieben werden. Das hat den Sinn, dass man Sie optisch trennen kann von einer Variable. Eine andere oft praktizierte Variante ist es, die definierten Konstanten nicht als Großbuchstaben zu schreiben, sondern mit einem kleinen k zu Beginn kenntlich zu machen, z.B.:

 kMeineKonstante

Es bleibt letztlich Ihnen überlassen.


weiter ---- Objective-C Index ---- Startseite----zurück


Das Inhaltsverzeichnis

EINSTIEG
KAPITEL 1: SCHRITT FÜR SCHRITT ZUM ERSTEN PROGRAMM
KAPITEL 2: OBJEKTE, KLASSEN, INSTANZEN UND METHODEN
KAPITEL 3: DIE VERSCHIEDENEN DATENTYPEN
KAPITEL 4: DIE PROGRAMMSCHLEIFEN
KAPITEL 5: ENTSCHEIDE DICH, ENTWEDER ODER....
KAPITEL 6: UND NOCHMALS KLASSEN
KAPITEL 7: VERERBUNG
KAPITEL 8: POLYMORPHISMUS, DYNASCHISCHE TYPISIERUNG UND DYNAMISCHES BINDEN
KAPITEL 9: NOCH MEHR DATENTYPEN UND VARIABLEN
KAPITEL 10: CATEGORIES, POSING AND PROTOCOL
KAPITEL 11: DER PRÄPROZESSOR

 

 

 

Links