SORU
27 Aralık 2013, Cuma


`` *Gerçekten* bir `std değerlendirmek boyutu::size_t`? Olabilir mi?

Aşağıdaki standart geçidi kullan:

[C 11: 5.3.3/6]: sizeof sizeof... sonucu 4* *türü bir sabittir.[ Not:std::size_t standart başlık <cstddef> (18.2) olarak tanımlanır.—son not ]

Şimdi:

[C 11: 18.2/6]: tipi size_t herhangi bir nesne bayt cinsinden boyutunu içermesi için yeterince büyük uygulama tanımlı bir işaretsiz tamsayı türüdür.

Kabul ediyorum, geçit vermez gerektiren size_t Bir tür alias tanımlı typedef ama madem ki açıkça belirtildiği üzere yapılan mevcut standart başlık <cstddef>, bence elimizden alıp okuyan başarısız vardır <cstddef> kaldırmak herhangi bir garanti size_t olacaktır kullanılabilir bir program.

Ancak, ilk teklifi göre, ne olursa olsun 14* *türünde bir ifade elde edebiliriz.

We can actually demonstrate both of these facts:

int main()
{
    typedef decltype(sizeof(0)) my_size_t;

    my_size_t x   = 0;  // OK
    std::size_t y = 1;  // error: 'size_t' is not a member of 'std'
}

std::size_t program için görünür değil, ama sizeof(0) hala bize verir mi? Gerçekten mi?

Bu nedenle 5.3.3/6 olduğunu söylemek doğru değilkusurluaslında, "her ne kadar std::size_t giderir aynı tür", amadeğil20* *kendisi?

Tabii, iki olursa std::size_t ama, yine de, hiçbir yerde gerçekten gerekli bu. diğer bir türü ise bir ve aynıdır.

CEVAP
27 Aralık 2013, Cuma


Sadece görev sizeof(expr) türü standart std::size_t türü ile aynıdır. sizeof(expr) adı std::size_t kullanılabilir kılan bir yetki yok ve std::size_t sadece dahili ayrılmaz tür bir isim, çünkü bu gerçekten bir sorun yok.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • BSA

    BSA

    9 NİSAN 2012
  • Stanislav Petrov

    Stanislav Pe

    7 ŞUBAT 2009