2008-08-22 10 views
5

Ich lerne objective-C und Kakao. In den Apple-Tutorial arbeite ich durch eine Randnotiz gibt es, der sagt:Was ist ein "Null definiertes Makro"?

IBOutlet ist ein Nulldefiniertes Makro, die der C-Präprozessor bei der Kompilierung entfernt.

Ich bin neugierig - was ist ein nulldefiniertes Makro?

Antwort

8
#define IBOutlet 

Immer wenn IBOutlet im Programmtext verwendet wird, wird es durch nichts ersetzt.

8

FYI, in diesem speziellen Fall ist der Grund, warum die IBOutlet sogar existiert, einfach, so dass Interface Builder die Quelldatei analysieren kann und einige Bits des Verständnisses daraus lesen kann. Es ist ein Hinweis (naja, ein bisschen stärker als ein Hinweis), dass die Variable, der IBOutlet vorangestellt ist, beim Entwurf der Benutzeroberflächen als Outlet in Interface Builder angezeigt werden sollte.

7

Ein nulldefiniertes Makro ist ein Makro, das vom Präprozessor durch nichts ersetzt wird (wird entfernt). Es hat die Aufgabe, einen Hinweis auf etwas in dem Code zu geben, wie zum Beispiel:

 
#define IN 
#define OUT 
#define INOUT 

int myFunction(IN char *name, INOUT char *address, OUT char *phone); 

Diese Erklärung legt nahe, dass name ist eine Eingangsgröße für die Funktion, address ist sowohl Eingang und Ausgang, phone ist eine Ausgangsgröße.

+1

Das ist wirklich süß. Erinnert mich an Ada (offensichtlich). Ich bevorzuge Präfix den Parameternamen mit in oder out. Aber der gleiche Effekt. – schwa

+0

Gleiches, abgesehen von der Verschmutzung des Namensraums mit verrückten Makros. ;) – Kos

0

Auch - wenn Sie nicht sicher sind, wie alles definiert ist - Befehl doppelklicken Sie darauf und Xcode wird die Definition in der ursprünglichen Quelldatei öffnen.

0

Oh und während ich dabei bin. Option Doppelklick öffnet (versucht) die Dokumentation für das doppelt angeklickte Symbol.

+3

Warum verschmelzt man die beiden Antworten nicht und löscht einen? – Amarghosh

Verwandte Themen