এখানে আমরা দেখব, কেন আমাদের সি-তে কঠোর উপনাম ব্যবহার করা উচিত। সেই অংশটি নিয়ে আলোচনা করার আগে, আসুন একটি কোড দেখি, এবং আউটপুট বিশ্লেষণ করার চেষ্টা করি।
উদাহরণ
#include<stdio.h> int temp = 5; int* var = &temp; int my_function(double* var) { temp = 1; *var = 5.10; //this will change the value of temp return (temp); } main() { printf("%d", my_function((double*)&temp)); }
আউটপুট
1717986918
যদি আমরা ফাংশনকে my_function বলি, তাহলে এটি 1 রিটার্ন করবে। আমরা my_function((ডবল*)&temp) ব্যবহার করেও এটিকে কল করতে পারি। এটি 1 ফেরত দেওয়ার কথা, কিন্তু এখানে আমরা দেখতে পাচ্ছি যে এটি অন্য কিছু ফেরত দিচ্ছে। এই কোডটি শুধুমাত্র ধ্রুবক 1 ফেরানোর জন্য তৈরি করা হয়েছিল। এই সমস্যাটি সমাধান করতে, আমরা কঠোর অ্যালিয়াসিং ব্যবহার করতে পারি।
সীমাবদ্ধ কোয়ালিফায়ার কীওয়ার্ড ব্যবহার করুন। এটি নির্দেশ করে যে আমরা কম্পাইলারকে প্রতিশ্রুতি দিচ্ছি যে পয়েন্টার সীমাবদ্ধ কীওয়ার্ডের সাথে কিছু উপনাম করা হয়নি। আমরা যদি আমাদের প্রতিশ্রুতি ভঙ্গ করি তবে কিছু সমস্যা হবে।