C ve C ++ bu açıdan farklıdır.
C 2011 Çevrimiçi Standardı
6.7.6.3 İşlev bildirgeleri (prototipler dahil)
...
10 void
Listedeki tek öğe olarak adlandırılmamış bir parametrenin özel durumu , işlevin parametre olmadığını belirtir.
...
14 Bir tanımlayıcı listesi sadece fonksiyon parametrelerinin tanımlayıcılarını bildirir. Bir işlev bildirgesinde, bu işlevin tanımının bir parçası olan boş bir liste, işlevin parametresi olmadığını belirtir. Bir işlev bildirgesinde, bu işlevin tanımının bir parçası olmayan boş liste, parametre sayısı veya türleri hakkında hiçbir bilgi verilmeyeceğini belirtir. 145)
Kısacası, bir işlev bildirimindeki boş bir parametre listesi , işlevin belirtilmemiş sayıda parametre aldığını belirtirken, işlev tanımındaki boş bir parametre listesi , işlevin parametre almadığını gösterir.
T foo( void ); // declaration, foo takes no parameters
T bar(); // declaration, bar takes an *unspecified* number of parameters
T foo( void ) { ... } // definition, foo takes no parameters
T bar() { ... } // definition, bar takes no parameters
C ile ilgili olarak, hiçbir fonksiyon bildirimi veya tanımında boş bir tanımlayıcı listesi kullanmamalısınız . Bir fonksiyonun herhangi bir parametre alması gerekmiyorsa, bunu void
parametre listesinde kullanarak belirtin .
Çevrimiçi C ++ standardı
8.3.5 İşlevler [dcl.fct]
...
4 parametre-bildirim-cümlesi , işlev çağrıldığında belirtilebilecek argümanları ve işlemlerini belirler. [ Not: parametre bildirimi-maddesi işlev çağrısı belirtilen argümanlar dönüştürmek için kullanılır; 5.2.2'ye bakınız. - son not ] Parametre-bildirge-yan tümcesi boşsa, fonksiyon bağımsız değişken almaz. Bağımlı olmayan türde tek bir adsız parametreden oluşan bir parametre listesi void
, boş bir parametre listesine eşdeğerdir. Bu özel durum dışında, bir parametrenin tipi olmayacaktır cv void
. Eğer parametre-beyan-fıkrabir üç nokta veya bir işlev parametresi paketi (14.5.3) ile sonlanır, bağımsız değişkenlerin sayısı, varsayılan bir değişken içermeyen ve işlev parametre paketleri olmayan parametre sayısına eşit veya daha büyük olmalıdır. Sözdizimsel olarak doğru olan ve “...” soyut bildirgenin bir parçası olmadığı durumlarda , “, ...” “...” ile eşanlamlıdır. [ Örnek: beyan int printf(const char*, ...);
değişken sayılar ve argüman tipleri ile çağrılabilecek bir fonksiyon bildirir. printf("hello world");
printf("a=%d b=%d", a, b);
Bununla birlikte, ilk argüman dönüştürülebilen bir tipte olmalıdır const char*
- uç örneği ] [ Not: standart başlık <cstdarg>
üç nokta kullanılarak geçirilen erişmek bağımsız değişkenler için bir mekanizma ihtiva eder (5.2.2 ve 18.10 bakınız). - son not ]
C ++ durumunda, bir bildirimdeki veya tanımdaki boş bir parametre listesi, işlevin argüman almadığını ve parametre listesiyle eşdeğer olduğunu gösterir void
.