C ভাষায়
C প্রোগ্রামিং ল্যাঙ্গুয়েজে, যদি কোনো ফাংশন সিগনেচার কোনো প্যারামিটার না থাকা অবস্থায় ডিক্লেয়ার করা হয়, তবে সেটি একাধিক আর্গুমেন্ট ইনপুট হিসেবে নিতে পারে। কিন্তু C++-এ এই বিষয়টি সত্য নয়। C++-এ আর্গুমেন্ট পাস করলে কম্পাইলেশন ফেইল করবে। এই কারণেই int main() এবং int main(void) C-তে একই, কিন্তু int main(void) ভালো পদ্ধতি (better approach), কারণ এটি ইউজারকে main ফাংশনে একাধিক আর্গুমেন্ট পাস করতে বাধা দেয়।
উদাহরণ (C প্রোগ্রাম)
#include <stdio.h>
int main() {
static int counter = 3;
if (--counter) {
printf("%d ", counter);
main(5); // C-তে এটি কম্পাইল হবে
}
}
আউটপুট (C)
2 1
উদাহরণ (C++ প্রোগ্রাম)
#include <iostream>
using namespace std;
int main() {
static int counter = 3;
if (--counter) {
cout << counter;
main(5); // C++-তে এটি কম্পাইল এরর দেবে
}
}
আউটপুট (C++)
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() ^~~~
সারসংক্ষেপ: C-তে main() কল করার সময় আর্গুমেন্ট পাস করা যায় (যদিও এটি ব্যাড প্র্যাক্টিস), কিন্তু C++-এ main() কোনো আর্গুমেন্ট নেয় না। সত্যিকারের প্রোগ্রামে সবসময় int main(void) বা int main(int argc, char *argv[]) ব্যবহার করা উচিত।