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

C/C++-তে int main() এবং int main(void) এর পার্থক্য

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[]) ব্যবহার করা উচিত।

  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) এর পার্থক্য