Saya baru-baru mengetikkan program uji C kecil dan, dalam proses, saya membuat kesalahan ejaan dalam fungsi utama dengan sengaja menggunakan vooid
bukan void
.
Namun itu masih berhasil.
Mengurangi itu menjadi versi lengkap terkecil, saya berakhir dengan:
int main (vooid) {
return 42;
}
Ini memang compile ( gcc -Wall -o myprog myprog.c
) dan, ketika dijalankan, mengembalikan 42.
Bagaimana sebenarnya kode yang valid ini?
Ini transkrip yang dipotong dan ditempel dari bash
cangkang saya untuk menunjukkan apa yang saya lakukan:
pax$ cat qq.c
int main (vooid) {
return 42;
}
pax$ rm qq ; gcc -Wall -o qq qq.c ; ./qq
pax$ echo $?
42
int
parameter, Anda memanggil Undefined Behavior . Apa pun bisa terjadi :)