কম্পিউটার

C প্রোগ্রাম যা C++ এ কম্পাইল করবে না


C++ ভাষাটি C এর সাথে অবজেক্ট ওরিয়েন্টেড ধারণার মত কিছু অতিরিক্ত বৈশিষ্ট্য যোগ করে ডিজাইন করা হয়েছে। বেশিরভাগ C প্রোগ্রাম C++ কম্পাইলার ব্যবহার করেও কম্পাইল করা যেতে পারে। যদিও কিছু প্রোগ্রাম আছে যেগুলো C++ কম্পাইলার ব্যবহার করে কম্পাইল করা যায় না।

আসুন কিছু কোড দেখি, যেগুলো C কম্পাইলারে কম্পাইল করবে, কিন্তু C++ কম্পাইলারে নয়।

এই প্রোগ্রামে C++ কোডের জন্য একটি সংকলন ত্রুটি থাকবে। কারণ এটি এমন একটি ফাংশন কল করার চেষ্টা করছে যা আগে ঘোষণা করা হয়নি। কিন্তু সি তে এটি কম্পাইল হতে পারে

সি.

এর জন্য

উদাহরণ

#include<stdio.h>
int main() {
   myFunction(); // myFunction() is called before its declaration
}
int myFunction() {
   printf("Hello World");
   return 0;
}

আউটপুট(C)

Hello World

আউটপুট (C++)

[Error] 'myFunction' was not declared in this scope

C++-এ একটি সাধারণ পয়েন্টার কিছু ধ্রুবক ভেরিয়েবল নির্দেশ করতে পারে না, কিন্তু C-তে এটি নির্দেশ করতে পারে।

সি.

এর জন্য

উদাহরণ

#include<stdio.h>
int main() {
   const int x = 10;
   int *ptr;
   ptr = &x;
   printf("The value of x: %d", *ptr);
}

আউটপুট(C)

The value of x: 10

আউটপুট (C++)

[Error] invalid conversion from 'const int*' to 'int*' [-fpermissive]

C++ এ, আমরা যখন অন্য কিছু পয়েন্টার ধরন যেমন int*, char* অকার্যকর পয়েন্টারে বরাদ্দ করতে চাই তখন আমাদের স্পষ্টভাবে টাইপকাস্ট করতে হবে, কিন্তু C-তে, যদি এটি টাইপ কাস্ট করা না হয় তবে এটি কম্পাইল করা হবে।

সি.

এর জন্য

উদাহরণ

#include<stdio.h>
int main() {
   void *x;
   int *ptr = x;
   printf("Done");
}

আউটপুট(C)

Done

আউটপুট (C++)

[Error] invalid conversion from 'void*' to 'int*' [-fpermissive]

C++ এ, আমাদের অবশ্যই ধ্রুবক ভেরিয়েবল শুরু করতে হবে কিন্তু C-তে, এটি আরম্ভ ছাড়াই কম্পাইল করা যেতে পারে।

সি.

এর জন্য

উদাহরণ

#include<stdio.h>
int main() {
   const int x;
   printf("x: %d",x);
}

আউটপুট(C)

x: 0

আউটপুট (C++)

[Error] uninitialized const 'x' [-fpermissive]

C-তে আমরা 'new' নামে কিছু ভেরিয়েবল ব্যবহার করতে পারি। কিন্তু C++ এ, আমরা এই নামটিকে পরিবর্তনশীল নাম হিসেবে ব্যবহার করতে পারি না কারণ C++-এ 'নতুন' একটি কীওয়ার্ড। এটি মেমরি স্পেস বরাদ্দ করতে ব্যবহৃত হয়৷

সি.

এর জন্য

উদাহরণ

#include<stdio.h>
int main() {
   int new = 10;
   printf("new: %d",new);
}

আউটপুট(C)

new: 10

আউটপুট (C++)

[Error] expected unqualified-id before 'new'
[Error] expected type-specifier before ')' token

আমরা C++ এ নিম্নলিখিত কোড কম্পাইল করতে পারি না। যখন আমরা int কে char* এ রূপান্তর করার চেষ্টা করছি তখন এটি একটি ত্রুটি ফিরিয়ে দেবে। কিন্তু C-তে, এটা ঠিক কাজ করবে।

সি.

এর জন্য

উদাহরণ

#include<stdio.h>
int main() {
   char *c = 123;
   printf("c = %u", c);
}

আউটপুট(C)

c = 123

আউটপুট (C++)

[Error] invalid conversion from 'int' to 'char*' [-fpermissive]

C তে আমরা void ব্যবহার করতে পারি main() এর রিটার্ন টাইপ হিসেবে, কিন্তু C++ এ, আমাদেরকে int ব্যবহার করতে হবে main() এর রিটার্ন টাইপ হিসেবে।

সি.

এর জন্য

উদাহরণ

#include<stdio.h>
void main() {
   printf("Hello World");
}

আউটপুট(C)

Hello World

আউটপুট (C++)

[Error] '::main' must return 'int'

  1. কিভাবে প্রোগ্রামগুলি আনইনস্টল করবেন যা Windows 10 এ আনইনস্টল হবে না

  2. C++ প্রোগ্রামে বাইনারি অনুসন্ধান?

  3. C++ প্রোগ্রাম যা পুরো মেমরি পূরণ করবে

  4. কিভাবে কম্পাইল এবং C++ প্রোগ্রাম চালাতে হয়?