C dan C ++ berbeda dalam hal ini.
C 2011 Online Standard
6.7.6.3 Deklarator fungsi (termasuk prototipe)
...
10 Kasus khusus dari parameter tipe yang tidak disebutkan namanya void
sebagai satu-satunya item dalam daftar menentukan bahwa fungsi tidak memiliki parameter.
...
14 Daftar pengidentifikasi hanya menyatakan pengidentifikasi parameter fungsi. Daftar kosong di deklarator fungsi yang merupakan bagian dari definisi fungsi yang menentukan bahwa fungsi tidak memiliki parameter. Daftar kosong dalam deklarator fungsi yang bukan bagian dari definisi fungsi itu menentukan bahwa tidak ada informasi tentang jumlah atau jenis parameter yang disediakan. 145)
Singkatnya, daftar parameter kosong dalam deklarasi fungsi menunjukkan bahwa fungsi tersebut mengambil jumlah parameter yang tidak ditentukan , sedangkan daftar parameter kosong dalam definisi fungsi menunjukkan bahwa fungsi tersebut tidak mengambil parameter.
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
Sejauh menyangkut C, Anda tidak boleh menggunakan daftar pengidentifikasi kosong dalam deklarasi atau definisi fungsi . Jika suatu fungsi tidak dimaksudkan untuk mengambil parameter apa pun, tentukan dengan menggunakan void
dalam daftar parameter.
Online C ++ standar
8.3.5 Fungsi [dcl.fct]
...
4 Parameter-declaration-clause menentukan argumen yang dapat ditentukan, dan pemrosesan mereka, ketika fungsi dipanggil. [ Catatan: yang parameter-deklarasi-klausul digunakan untuk mengkonversi argumen ditentukan pada panggilan fungsi; lihat 5.2.2. - end note ] Jika parameter-declaration-klausa kosong, fungsinya tidak membutuhkan argumen. Daftar parameter yang terdiri dari parameter tunggal tanpa nama dari tipe yang tidak bergantung void
sama dengan daftar parameter kosong. Kecuali untuk kasus khusus ini, suatu parameter tidak boleh memiliki tipe cv void
. Jika parameter-deklarasi-klausadiakhiri dengan ellipsis atau paket parameter fungsi (14.5.3), jumlah argumen harus sama dengan atau lebih besar dari jumlah parameter yang tidak memiliki argumen default dan bukan paket parameter fungsi. Di mana secara sintaksis benar dan di mana "..." bukan bagian dari deklarator abstrak , ", ..." identik dengan "...". [ Contoh: deklarasi int printf(const char*, ...);
mendeklarasikan fungsi yang dapat dipanggil dengan jumlah dan tipe argumen yang berbeda-beda. printf("hello world");
printf("a=%d b=%d", a, b);
Namun, argumen pertama harus dari jenis yang dapat dikonversi ke const char*
- akhir contoh ] [ Catatan: Header standar <cstdarg>
berisi mekanisme untuk argumen mengakses lulus menggunakan elipsis (lihat 5.2.2 dan 18,10). - catatan akhir ]
Dalam kasus C ++, daftar parameter kosong baik dalam deklarasi atau definisi menunjukkan bahwa fungsi tidak mengambil argumen, dan setara dengan menggunakan daftar parameter void
.