SORU
30 Mayıs 2011, PAZARTESİ


Uygun C yapı hazırlama

Yeniden rahat bir şekilde 'pod' C yapılar. bulmaya çalışıyorum Şimdi, aşağıdaki yapı düşünün:

struct FooBar {
  int foo;
  float bar;
};
// just to make all examples work in C and C  :
typedef struct FooBar FooBar;

Eğer uygun C Bu yeniden istersem (!), Sadece yazabilirim:

/* A */ FooBar fb = { .foo = 12, .bar = 3.4 }; // illegal C  , legal C

Eğer değiştirirsem boynumu kırmak için yapılmış olması beni düşündürüyor çünkü açıkça aşağıdaki gösterimde önlemek istiyorum unutmayınhiçbir şeygelecekte: yapı

/* B */ FooBar fb = { 12, 3.4 }; // legal C  , legal C, bad style?

/* A */ örnekte olduğu gibi C aynı (ya da en azından benzer) elde etmek için, aptalca bir kurucu uygulamak istiyorum:

FooBar::FooBar(int foo, float bar) : foo(foo), bar(bar) {}
// ->
/* C */ FooBar fb(12, 3.4);

Kaynar su için iyi, ama tembel insanlar (tembellik iyi bir şey, değil mi?) için uygun değildir. Ayrıca, açıkça bir üye gidecek olan devlet olarak hemen hemen /* B */ örnek kadar kötü.

Bu yüzden, benim sorum C /* A */ veya daha iyi benzer elde edebilirim nasıl temelde. Alternatif olarak, bunu yapmak istemiyorum neden bir açıklama (benim zihinsel paradigma neden kötü olduğunu yani) benim için dert değil.

EDİT

TarafındanuygunYani aynı zamandasürdürülebilirveyedeksiz.

CEVAP
31 Mayıs 2011, Salı


style A C izin verilmez ve style B style BX kullanma hakkında istemediğine göre:

FooBar fb = { /*.foo=*/ 12, /*.bar=*/ 3.4 };  // :)

En azından bir ölçüde yardımcı olur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • failblog

    failblog

    17 HAZİRAN 2008
  • Strata1000

    Strata1000

    28 EYLÜL 2009