Boşluk türü - Void type

geçersiz tip, birkaçında C ve Algol68'den türetilmiş programlama dilleri, tip sonucu için işlevi normal olarak dönen, ancak arayan için bir sonuç değeri sağlamayan. Genellikle bu tür işlevler, yan etkiler, örneğin bazı görevleri gerçekleştirmek veya çıktı parametrelerine yazmak gibi. Bu tür bir bağlamda void türünün kullanımı, prosedürler içinde Pascal ve tanımlayan sözdizimsel yapılar alt programlar içinde Visual Basic. Aynı zamanda benzer Birim tipi kullanılan fonksiyonel programlama dilleri ve tip teorisi. Görmek Ünite tipi # Programlama dillerinde bir karşılaştırma için.

C ve C ++ ayrıca destekleyin boşluk tipine işaretçi (olarak belirtilir geçersiz *), ancak bu ilgisiz bir kavramdır. Bu türdeki değişkenler işaretçiler bir veriye belirtilmemiş yazın, yani bu bağlamda (ancak diğerleri değil) geçersiz * kabaca evrensel gibi davranır veya üst tip. Bir program muhtemelen bir işaretçiyi herhangi bir veri türüne dönüştürebilir (bir işlev işaretçisi ) geçersiz kılan bir işaretçiye ve bilgileri kaybetmeden orijinal türe geri dönerek bu işaretçileri polimorfik fonksiyonlar. C dili standardı, farklı işaretçi türlerinin aynı boyuta sahip olduğunu garanti etmez.

C ve C ++ 'da

Void sonuç türüne sahip bir işlev, işlevin sonuna ulaşarak veya bir dönüş ifadesi döndürülen değer olmadan. Boşluk türü de tek olarak görünebilir tartışma bir işlev prototipi işlevin hiçbir argüman almadığını belirtmek için. İsme rağmen, tüm bu durumlarda, void türünün bir Birim tipi sıfır olarak değil veya alt tip (bazen kafa karıştırıcı bir şekilde "boşluk türü" olarak adlandırılır), tekil olan gerçek bir birim türünden farklı olarak, boşluk türü değerini gösterme yolundan yoksundur ve dil, bir nesneyi bildirmek veya bir nesneyi temsil etmek için herhangi bir yol sağlamaz. tür ile değer geçersiz.

C'nin en eski sürümlerinde, belirli bir sonucu olmayan işlevler varsayılan olarak bir dönüş türü olarak ayarlanmıştır. int ve bağımsız değişken içermeyen işlevlerin boş bağımsız değişken listeleri vardı. Türsüz verilere işaretçiler tamsayı veya işaretçiler olarak bildirildi kömür. Bazı erken C derleyiciler şimdi bir rahatsızlık olarak görülen, işlevin döndürülen değerini kullanmayan herhangi bir işlev çağrısında bir uyarı oluşturma özelliğine sahipti. Bazen eski kod dökümler bu tür işlev, bu uyarıyı bastırmak için void çağrısı yapar. Zamanla Bjarne Stroustrup çalışmalarına başladı C ++ 1979-1980'de, boşluk ve boşluk işaretçileri, AT & T'den türetilmiş derleyiciler tarafından desteklenen C dili lehçesinin bir parçasıydı.[1]

Boşluğun açık kullanımı ve bir işlev prototipi aşağıdaki tabloda detaylandırıldığı gibi C ve C ++ 'da farklı anlamlara sahiptir:[2]

CC ++ eşdeğeri
void f (void);void f (); (tercihli)
void f (void);
void f (); (sabit ancak bilinmeyen sayıda argüman kabul eder)şablon void f (Ts ... ts) {}

(kesinlikle eşdeğer değil)

Tartışmasız bir C prototipi, ör. geçersiz f () yukarıda, kullanımdan kaldırıldı C99,[3] ancak.

Haskell'de

C ++ 'nın aksine, fonksiyonel programlama dili Haskell boşluk türü, sakini olmayan boş türü belirtir [1]. Geçersiz türdeki bir işlev sonuç döndürmez ve tür imzası olan yan etkili bir program IO Void sona ermiyor veya çöküyor. Özellikle yok toplam fonksiyonlar boşluk tipine.

Referanslar

  1. ^ http://cm.bell-labs.com/cm/cs/who/dmr/chist.html, "Standardizasyon."
  2. ^ Stroustrup Bjarne (2009). Programlama: C ++ Kullanarak İlkeler ve Uygulama. Boston: Addison-Wesley. s. 996. ISBN  0-321-54372-6.
  3. ^ Bjarne Stroustrup, C ve C ++: Uyumlulukta Örnek Olaylar. Uzlaştırılabilir farklılıklar? Sen karar ver, Dr. Dobb's, 01 Eylül 2002; Baskı versiyonu