সি এবং সি++-এ main ফাংশন ডিক্লেয়ার করার দুটি সিনট্যাক্স দেখি: int main() এবং int main(void)। এগুলো একে অপরের সমান নয় — সি এবং সি++-এ আচরণ ভিন্ন।
সি++-এ
int main()এবংint main(void)— সম্পূর্ণ সমান- দুইটোই মানে: ফাংশন কোনো আর্গুমেন্ট নেয় না
- যদি আর্গুমেন্ট দিয়ে কল করা হয় তবে কম্পাইল এরর
সি-এ (গুরুত্বপূর্ণ পার্থক্য)
| ডিক্লেরেশন | অর্থ | আর্গুমেন্ট দিয়ে কল করা |
|---|---|---|
int main() | আর্গুমেন্ট স্পেসিফাইড নেই (পুরানো K&R স্টাইল) | অনুমোদিত (কিন্তু আর্গুমেন্টগুলো ইগনোর হয়) |
int main(void) | স্পষ্টভাবে কোনো আর্গুমেন্ট নেই | নিষিদ্ধ (কম্পাইল এরর) |
উদাহরণ ১: int main() — সি-এ আর্গুমেন্ট নেওয়া যায়
#include <stdio.h>
void my_function() { /* কিছু কাজ */ }
int main(void) {
my_function(10, "Hello", "World"); // কম্পাইল হয়ে যাবে (ওয়ার্নিং দিয়ে)
return 0;
}
উদাহরণ ২: int main(void) — সি-এ আর্গুমেন্ট নেওয়া যায় না
#include <stdio.h>
void my_function(void) { /* কিছু কাজ */ }
int main(void) {
my_function(10, "Hello", "World"); // কম্পাইল এরর: too many arguments
return 0;
}
সুপারিশ
- সি-এ সবসময়
int main(void)বাint main(int argc, char *argv[])ব্যবহার করুন voidলিখলে ইন্টেনশন স্পষ্ট হয় এবং কম্পাইলার প্রোটেকশন দেয়- সি++-এ যেকোনো একটা ব্যবহার করলেই চলবে, কিন্তু
int main()প্রচলিত