SORU
31 Mart 2011, PERŞEMBE


Önce ya da sonra inş inş?

Başlangıç için muhtemelen const ya da bir nesnenin veri veya bir işaretçi değil değiştirilebilir yapmak için kullanılan ya da ikimiz de biliyoruz.

const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer

Ancak aynı zamanda sözdizimi kullanabilirsiniz:

Object const *obj; // same as const Object* obj;

Önemli olan tek şey const anahtar kelime koymak. Şahsen tercih ederim koymak const sol türünü belirtmek için bu kadar veri değil değiştirilebilir olarak buluyorum okur daha iyi benim sol-sağ zihniyet ama hangi sözdizimi geldi ilk?

Daha da önemlisi neden const Veri belirterek, iki doğru yolu vardır ve ne durumda tercih ya da herhangi bir ihtiyacınız var mı?

Düzenleme:

Bu Derleyiciler şeyler yorumlamak gerektiği konusunda standart uzun ben doğmadan önce yazılmıştı zaman keyfi bir karar gibi geliyor bana. const anahtar kelime (varsayılan olarak?) solda ne uygulandığından Ekleme zarar olduğunu hiç düşünmüşler sanırım< . em^"" . kısayolları * ayrıştırma tarafından en az beyannamesi değişiklikleri gibi bir zamana kadar diğer şekillerde anahtar kelimeler ve türü elemeleri uygulamak veya ve ...

Bu C de o zaman sanıyorum böyleydi?

CEVAP
31 Mart 2011, PERŞEMBE


"neden sabit veri belirtme iki tane doğru yol var ve ne durumda tercih ya da herhangi bir ihtiyacın var mı?"

Aslında, uzmanların yıldız önce içinde const pozisyonu önemli değildir, bunun nedeni C dilbilgisi açıklama satırı yazmak ve Ritchie tarafından bu şekilde tanımlanmıştır.

Bu şekilde dil bilgisi tanımlı sebebi kendi C derleyicisi sağdan soldan giriş ayrıştırılmış Olası olduğuna tüketilen her bir belirteç işleme bitmiş. Alıcı * belirteç değişiklikleri işaretçi türü için geçerli beyan durumu. * const niteleyici bir işaretçi bildirimi; * önce karşılaşmış uygulanır anlamına gelir sonra const karşılaşma niteleyici veri işaret uygulanır anlamına gelir.

Semantik anlamı varsa const niteleyici önce görünürse ya da türü belirteçleri sonra değişmez çünkü, her iki şekilde kabul edilmektedir.

Davanın bir benzeri işlev işaretçileri ilan doğar, burada:

void * function1(void) void *, döndüren bir işlev bildirir
void (* function2)(void) beyan ederişlev işaretçisibir fonksiyon için döner void.

Yine dikkat edilmesi gereken şey dil sözdizimi soldan sağa doğru bir ayrıştırıcı destekler.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chaoticmoogle

    Chaoticmoogl

    13 ŞUBAT 2006
  • TheFlashCentre

    TheFlashCent

    22 Mayıs 2008
  • Vsauce

    Vsauce

    30 Temmuz 2007