typedef
একটি ভাষা গঠন যা একটি নামকে একটি প্রকারের সাথে সংযুক্ত করে।
উদাহরণস্বরূপ, আপনি এটি একইভাবে ব্যবহার করুন আপনি আসল প্রকারটি ব্যবহার করবেন
typedef int myinteger;
typedef char *mystring;
typedef void (*myfunc)();
তাদের মত ব্যবহার
myinteger i; // is equivalent to int i;
mystring s; // is the same as char *s;
myfunc f; // compile equally as void (*f)();
আপনি দেখতে পাচ্ছেন, আপনি উপরে বর্ণিত সংজ্ঞা দিয়ে কেবল টাইপফিড নামটি প্রতিস্থাপন করতে পারেন ।
অসুবিধা সি এবং সি ++ এ ফাংশন সিনট্যাক্স এবং পঠনযোগ্যতার পয়েন্টারের মধ্যে রয়েছে এবং এই typedef
জাতীয় ঘোষণার পাঠযোগ্যতা উন্নত করতে পারে। তবে বাক্য গঠনটি যথাযথ, যেহেতু ফাংশনগুলি - অন্যান্য সাধারণ ধরণের থেকে পৃথক - একটি রিটার্ন মান এবং প্যারামিটার থাকতে পারে, এভাবে ফাংশনটির জন্য পয়েন্টারটির কখনও কখনও দীর্ঘ এবং জটিল ঘোষণা হয়।
পঠনযোগ্যতা ফাংশন অ্যারেগুলিতে পয়েন্টার এবং আরও কিছু অপ্রত্যক্ষ স্বাদে সত্যই জটিল হতে শুরু করে।
আপনার তিনটি প্রশ্নের উত্তর দিতে
টাইপেইফ কেন ব্যবহার করা হয়?
কোডটি পড়া সহজ করার জন্য - বিশেষত ফাংশনগুলির নির্দেশক বা কাঠামোর নামগুলির জন্য।
সিনট্যাক্সটি অদ্ভুত দেখায় (ঘোষণার জন্য নির্দেশকের মধ্যে)
সেই বাক্য গঠনটি কমপক্ষে শুরু করার সময় পড়তে পারা যায় না। typedef
পরিবর্তে একটি ঘোষণা ব্যবহার করে পড়া সহজ হয় reading
কোনও ফাংশনের মেমরি ঠিকানা সঞ্চয় করার জন্য কোনও ফাংশন পয়েন্টার তৈরি করা হয়েছে?
হ্যাঁ, একটি ফাংশন পয়েন্টার একটি ফাংশনের ঠিকানা সঞ্চয় করে। এটির typedef
নির্মাণের সাথে কোনও সম্পর্ক নেই যা কেবল কোনও প্রোগ্রামের লেখা / পড়া সহজ করে দেয়; সংকলক প্রকৃত কোড সংকলনের আগে টাইপডেফ সংজ্ঞাটি কেবল প্রসারিত করে।
উদাহরণ:
typedef int (*t_somefunc)(int,int);
int product(int u, int v) {
return u*v;
}
t_somefunc afunc = &product;
...
int x2 = (*afunc)(123, 456); // call product() to calculate 123*456