SORU
1 NİSAN 2009, ÇARŞAMBA


Objective-C'de bir typedef numaralama nedir?

Ben temelde enum Bir, ve o zaman anladığını sanmıyorum.

Örneğin:

typedef enum {
    kCircle,
    kRectangle,
    kOblateSpheroid
} ShapeType;

Gerçekten burada bildirilmiş nedir?

CEVAP
1 NİSAN 2009, ÇARŞAMBA


Üç şey vardır bildirilmiş burada: bir anonim numaralandırılmış türü olduğunu ilan etti ShapeType bildirilen bir typedef için anonim numaralandırma ve üç isim kCircle, kRectangle kOblateSpheroid bildirilmiş olarak integral sabitleri.

Hadi biraz mola. En basit durumda, bir numaralandırma olarak ilan edilebilir

enum tagname { ... };

Bu etiket ile bir numaralandırma tagname beyan eder. C ve Objective-C (amadeğilC ) bu başvurularıgerekirenum anahtar ile çalıştırılması. Örneğin:

enum tagname x;  // declare x of type 'enum tagname'
tagname x;  // ERROR in C/Objective-C, OK in C  

enum anahtar kelime her yerde kullanmak zorunda kalmamak için, bir typedef oluşturulabilir:

enum tagname { ... };
typedef enum tagname tagname;  // declare 'tagname' as a typedef for 'enum tagname'

Bu bir çizgi içine basitleştirilmiş olabilir:

typedef enum tagname { ... } tagname;  // declare both 'enum tagname' and 'tagname'

Ve son olarak, eğer ihtiyacımız yok olmak üzere enum tagname enum anahtar kelime, yapabiliriz enum anonim ve sadece ilan ile typedef adı:

typedef enum { ... } tagname;

Şimdi, bu durumda, ShapeType anonim bir sıralama typedef çiğnenmiş bir isim olarak ilan ediyoruz. ShapeType gerçekten sadece bir integral yazın ve sadece kullanılan ilan değişkenlerini tutan bir değerler listelenen bildirimi (kCircle, kRectangle kOblateSpheroid). Numaralandırma değerleri okurken dikkatli olmak zorunda, bu yüzden ShapeType bir değişken döküm tarafından başka bir değer olsa da atayabilirsiniz.

Son olarak, kCircle, kRectangle kOblateSpheroid genel ad alanında integral sabitleri olarak ilan etti. Belirli değerleri belirtilen bu yana, ardışık tamsayılar için kCircle 0 ile başlayan atandığını 0, 33* *1 ve kOblateSpheroid 2.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • NextGenWindows

    NextGenWindo

    8 Kasım 2011
  • Sergio Fernandez

    Sergio Ferna

    1 EKİM 2009
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009

İLGİLİ SORU / CEVAPLAR