บางครั้งเราจะเห็นว่าคำจำกัดความของฟังก์ชันหลักมีสองประเภท int main() และ int main(void) แล้วมีความแตกต่างหรือไม่?
ใน C ++ ไม่มีความแตกต่าง ใน C ก็ถูกต้องทั้งคู่ แต่อันที่สองดีกว่าในทางเทคนิค ระบุว่าฟังก์ชันไม่มีอาร์กิวเมนต์ใดๆ ใน C หากฟังก์ชันบางอย่างไม่ได้ระบุด้วยอาร์กิวเมนต์ ก็สามารถเรียกฟังก์ชันนั้นได้โดยไม่ต้องใช้อาร์กิวเมนต์ หรืออาร์กิวเมนต์จำนวนเท่าใดก็ได้ กรุณาตรวจสอบรหัสทั้งสองนี้ (จำไว้ว่าสิ่งเหล่านี้อยู่ใน C ไม่ใช่ C++)
ตัวอย่าง
#include<stdio.h> void my_function() { //some task } main(void) { my_function(10, "Hello", "World"); }
ผลลัพธ์
This program will be compiled successfully
ตัวอย่าง
#include<stdio.h> void my_function(void) { //some task } main(void) { my_function(10, "Hello", "World"); }
ผลลัพธ์
[Error] too many arguments to function 'my_function'
ใน C++ โปรแกรมทั้งสองจะล้มเหลว ดังนั้นจากนี้ เราจึงเข้าใจได้ว่า int main() สามารถเรียกได้ด้วยอาร์กิวเมนต์จำนวนเท่าใดก็ได้ใน C แต่ int main(void) จะไม่อนุญาตให้มีการโต้แย้งใดๆ