কম্পিউটার টিউটোরিয়াল

সি/সি++-এ int main() এবং int main(void) এর পার্থক্য

সি এবং সি++-এ 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() প্রচলিত
  1. C/C++-এ strncmp() এবং strcmp()-এর পার্থক্য

  2. C/C++-এ #include <filename> এবং #include "filename"-এর পার্থক্য

  3. C/C++-এ const int*, const int * const, int const * পার্থক্য

  4. C++-এ ডিক্লেয়ারেশন (Declaration) এবং ডেফিনিশন (Definition) এর পার্থক্য