এখানে, আমরা কিছু সি প্রোগ্রাম লিখব যা সি++-এ কম্পাইল হবে না। যeday সি++ সি-এর উত্তরাধিকারী হিসেবে বিবেচিত হয় যেটির সকল ফিচার আছে এবং সি কোডের সাথে কম্প্যাটিবিলিটি আছে তবে কিছু প্রোগ্রাম আছে যা সি++ কম্পাইলারের সাথে কম্পাইল হবে না বা কম্পিলেশন এরর দেবে।
সি++-এ কম্পাইল না হওয়া কিছু সি প্রোগ্রামের তালিকা -
ঘোষণা থেকে পূর্বে ফাংশন কল - সি++-এ, ঘোষণা থেকে পূর্বে ফাংশন কল কম্পাইলেশন এরর দেয়। কিন্তু এটি সি-এ ভালো কাজ করে।
উদাহরণ
#include <stdio.h> int main(){ printHello(); return 0; } void printHello(){ printf("TutorialsPoint"); }
আউটপুট
TutorialsPoint
টাইপকাস্টেড পয়েন্টার ব্যবহার - যদি সি-এ একটি পয়েন্টার void হিসেবে ঘোষণা করি এবং তারপর এই পয়েন্টারটি অন্য ডেটা ভেরিয়েবল পয়েন্ট করতে ব্যবহার করি। এটি সি-এ কম্পাইলার নিজেই করতে পারে কিন্তু সি++-এ, এই পয়েন্টারগুলোকে টাইপকাস্ট করতে হয়।
উদাহরণ
#include <stdio.h> int main(){ void *ptr; int *ptr2 = ptr; return 0; }
ইনিশিয়ালাইজেশন ছাড়া কনস্টান্ট ভ্যালু ঘোষণা - সি-এ, আপনি কোনো মান দিয়ে না কনস্টান্ট ভ্যালু ঘোষণা করতে পারেন কিন্তু সি++-এ এটি করলে এরর দেয়।
উদাহরণ
#include <stdio.h> int main(){ const int x; printf("%d", x); return 0; }
আউটপুট
0
নরমাল পয়েন্টার কনস্টান্ট ভেরিয়েবলের সাথে ব্যবহার - সি++-এ এটি অনুমোদিত নয় যখন সি কনস্টান্ট ভেরিয়েবলকে নরমাল পয়েন্টারের সাথে ব্যবহার করার অনুমতি দেয়।
উদাহরণ
#include <stdio.h> int main(void){ int const x = 3424; int *cptr = &x; printf("পয়েন্টারের মান: %d\n", *cptr); return 0; }
আউটপুট
পয়েন্টারের মান: 3424
নির্দিষ্ট কীওয়ার্ড ভেরিয়েবল নাম হিসেবে ব্যবহার - সি প্রোগ্রামিং ভাষায় নির্দিষ্ট কীওয়ার্ড ভেরিয়েবল নাম হিসেবে ব্যবহার করা বৈধ অর্থাৎ সি-এ কম্পাইল হবে কিন্তু সি++-এ কম্পাইল হবে না।
উদাহরণ
#include <stdio.h> int main(void){ int class = 5; printf("%d", class); }
আউটপুট
5
এই কীওয়ার্ডগুলো সি++-এ অন্তর্ভুক্ত, আরও কিছু আছে new, delete, explicit, ইত্যাদি।