SORU
6 AĞUSTOS 2013, Salı


ADL örneği hakkında Bjarne yanlış, ya da derleyici bir hata var mı?

OkuyorumThe C Programming Language, 4th Edition(Bjarne Stroustrup) hakkında. Burada alıntı (26.3.6, Overaggressive ADL):

Bağımlı değişken arama (ADL sık sık olarak anılacaktır) ayrıntı (14.2.4) önlemek için çok yararlıdır. Örneğin:

#include <iostream>

int main()
{
    std::cout << "Hello, world" << endl; // OK because of ADL
}

Bağımlı değişken arama olmadan, endl manipülatör yeri olmayacak. Olduğu gibi, << ilk bağımsız değişken derleyici bildirimleri ostream std tanımlanmış. Bu nedenle, std endl arar ve (<iostream>) bulur.

Ve burada result derleyici (C 11 mod) tarafından üretilen:

prog.cpp: In function ‘int main()’:
prog.cpp:4:36: error: ‘endl’ was not declared in this scope
 std::cout << "Hello, world" << endl;
                                ^

Ya bu kitapta derleyici veya bir hata değildir. Standart ne diyor?

Güncelleme:

Biraz açıklık getirmek istiyorum. Doğru cevap std::endl kullanmak olduğunu biliyorum. Soru kitap metni hakkında. GibiLachlan Eastonzaten, sadece bir yazım hatası değildir " dedi. Bütün paragraf (muhtemelen) yanlış. Eğer kitap (az bilinen) başka bir yazar tarafından ise bu tür bir hata kabul edebilirim, ama bir Kadın tarafından yazıldığı için (ve hala am) şüphem yok.

CEVAP
6 AĞUSTOS 2013, Salı


Derleyici bir hata değil. ADL arama için kullanılırfonksiyonlardeğilargümanlar. operator<< işlevi ADL burada parametreleri bakarak std::cout ve ne olması gerektiği gibi) std::endl ile bulundu.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EminemMusic

    EminemMusic

    9 ŞUBAT 2007
  • Skittles Page

    Skittles Pag

    28 Mart 2011
  • SlimaksClass

    SlimaksClass

    15 Kasım 2010