Neden bir yapı çok sık C typedef miyiz? | Netgez.com
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

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • HTC Tutorials

    HTC Tutorial

    21 EYLÃœL 2010
  • ipsy

    ipsy

    1 EKÄ°M 2012