ใน C++ ทั้ง int main() และ int main(void) ไม่มีความแตกต่าง ใน C ทั้งคู่ถูกต้อง แต่ int main(void) ถูกต้องทางเทคนิคมากกว่า เพราะระบุชัดเจนว่าไม่รับอาร์กิวเมนต์
ใน C หากฟังก์ชันไม่ระบุพารามิเตอร์ สามารถเรียกใช้ได้ทั้งแบบไม่มีอาร์กิวเมนต์และแบบมีอาร์กิวเมนต์กี่ตัวก็ได้ แต่ถ้าระบุ void จะห้ามส่งอาร์กิวเมนต์เข้ามา
ตัวอย่าง: ไม่ระบุ void (C)
#include <stdio.h>
void my_function() {
// some task
}
int main(void) {
my_function(10, "Hello", "World"); // คอมไพล์ผ่านได้ใน C
return 0;
}
ตัวอย่าง: ระบุ void (C)
#include <stdio.h>
void my_function(void) {
// some task
}
int main(void) {
my_function(10, "Hello", "World"); // Error: too many arguments
return 0;
}
ใน C++ ทั้งสองกรณีจะล้มเหลว (compile error) เพราะ C++ บังคับให้ตรวจสอบพารามิเตอร์เข้มงวด