SORU
31 EKİM 2008, Cuma


Neden bir yapı çok sık C typedef miyiz?

Birçok program aşağıdaki gibi yapılardan oluşan görmedim

typedef struct 
{
 int i;
 char k;
} elem;
elem user;

Bunu birçok kez gördüm. Neden bu kadar sık gerekli midir? Herhangi bir neden veya geçerli alan?

CEVAP
31 EKİM 2008, Cuma


Greg Hewgill dediği gibi, typedef artık her yerde struct yazmak zorunda kalıyoruz. Sadece tuş vuruşlarını kaydeder, bu da bir nebze daha fazla bir soyutlama sağlar beri kod temizleyici yapabilirsiniz.

Şeyler gibi

typedef struct {
  int x, y;
} Point;

Point point_new(int x, int y)
{
  Point a;
  a.x = x;
  a.y = y;
  return a;
}

"her yerde, anahtar sözcük, daha çok bir tür" "senin dilinde. Noktası denir yok gibi görünüyor yapı görmek gerekmez zaman daha temiz olur , typedef, sonra sanırım durum bu.

Ayrıca örnek (ve benim) struct kendini adlandırma ihmal ederken, aslında adlandırma da donuk bir tip sağlamak istediğinizde yararlı olduğunu unutmayın. O zaman, örneğin: başlık içinde böyle bir kod var

typedef struct Point Point;

Point * point_new(int x, int y);

ve sonra uygulama dosyasında: struct bildirim sağlamak

struct Point
{
  int x, y;
};

Point * point_new(int x, int y)
{
  Point *p;
  if((p = malloc(sizeof *p)) != NULL)
  {
    p->x = x;
    p->y = y;
  }
  return p;
}

Bu ikinci durumda, kendi ulusal üstbilgi dosyası kullanıcıların gizli olduğu için değer Nokta dönüşü olamaz. Bu tekniği yaygın olarak örneğin GTK kullanılır.

GÜNCELLEMENot orada da oldukça iddialı projeleri C bu kullanım typedef gizle struct kabul kötü bir fikir, Linux çekirdeği olduğunu muhtemelen en iyi bilinen bu proje. Linus The Linux Kernel CodingStyle document' kızgın sözler. bkz: Bölüm 5 :) Benim açımdan "gereken soru belki de ayarlı değil" sonuçta taş,.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • Gali B

    Gali B

    1 EYLÜL 2006
  • MrOctopi

    MrOctopi

    6 Aralık 2010