C
Trong ngôn ngữ lập trình C, nếu một chữ ký hàm không có bất kỳ tham số nào thì nó có thể lấy nhiều đối số làm đầu vào nhưng điều này không đúng với C ++. Quá trình biên dịch sẽ không thành công nếu các đối số được truyền cho một hàm như vậy trong C ++. Đây là lý do int main () và int main (void) giống nhau trong C, nhưng int main (void) là cách tiếp cận tốt hơn, hạn chế người dùng truyền nhiều đối số cho hàm main.
Ví dụ (C)
#include <stdio.h> int main() { static int counter = 3; if (--counter){ printf("%d ", counter); main(5); } }
Đầu ra
2 1
Ví dụ (C ++)
#include <iostream> using namespace std; int main() { static int counter = 3; if (--counter){ cout << counter; main(5); } }
Đầu ra
main.cpp: In function 'int main()': main.cpp:10:13: error: too many arguments to function 'int main()' main(5); ^ main.cpp:5:5: note: declared here int main() ^~~~