SORU
4 Mart 2009, ÇARŞAMBA


'yapı' ve 'typedef yapı' C arasındaki fark ?

C arasında herhangi bir fark var:

struct Foo { ... };

ve

typedef struct { ... } Foo;

CEVAP
4 Mart 2009, ÇARŞAMBA


C , sadece ince bir fark var. Bir fark yaratır C, kalma bir şey.

C, tip iki farklı ad var: */union/enum *9 bir adetiketisimler ve typedef isim ad. Sadece dedi:

struct Foo { ... };
Foo x;

Foo sadece etiket ad olarak tanımlanır, çünkü derleyici bir hata olur. Olarak ilan etmek olurdu:

struct Foo x;

Herhangi bir zaman Foo her zaman " diyebilirsiniz struct Foo bir bakın isterseniz. Bu can sıkıcı hızlı alır, typedef: bir ekleyebilirsiniz

struct Foo { ... };
typedef struct Foo Foo;

Şimdi her iki struct Foo (etiket ad) ve sadece düz Foo (typedef ad) hem bakın aynı şey, ve sen-ebilmek serbestçe beyan nesnelerin türü Foo olmadan yapı anahtar kelime. Yapı:

typedef struct Foo { ... } Foo;

sadece Bildirgesi ve typedef) teriminin kısaltmasıdır. Son olarak

typedef struct { ... } Foo;

ilan isimsiz bir yapı ve bunun için typedef oluşturur. Böylece, bu yapı ile, etiket ad ismi, typedef ad tek bir adı yok. Bu aynı zamanda ileri-ilan edilemez anlamına gelir. Eğer ileri bir açıklama yapmak istiyorsanız, etiket ad bir isim vermek zorundasın.

C , struct/union/enum/sınıf tanımlamalar hareket gibi örtülü olarak typedef'ed sürece, adı gizli tarafından bir beyanname ile aynı adı. Tüm ayrıntılar için Michael Burr's answer bkz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • Mr_BrettHooge

    Mr_BrettHoog

    3 Ocak 2011
  • William Hyde

    William Hyde

    23 HAZİRAN 2008