মূলত struct কীওয়ার্ড একটি স্ট্রাকচার ডিফাইন করতে ব্যবহৃত হয়। C-এ স্ট্রাকচার ভ্যারিয়েবল ডিক্লেয়ার করার সময় struct কীওয়ার্ড লিখতে হয় (যেমন struct MyStruct s;)। typedef ব্যবহার করলে একটি নতুন নাম দিয়ে স্ট্রাকচার ব্যবহার করা যায় struct কীওয়ার্ড ছাড়া (যেমন MyStruct s;)।
C++-এ অবস্থা
C++-এ struct এবং typedef struct-এর মধ্যে কোনো পার্থক্য নেই। কারণ C++-এ সব struct/union/enum/class ডিক্লেয়ারেশন ইমপ্লিসিটলি typedef করা থাকে, যতক্ষণ না একই নামে অন্য ডিক্লেয়ারেশন আড়াল করে।
C-এ পার্থক্য (তুলনার জন্য):
// C-এ
struct Point { int x, y; };
struct Point p1; // অবশ্যই 'struct' লাগবে
typedef struct Point Point_t;
Point_t p2; // 'struct' লাগবে না
C++-এ:
// C++-এ
struct Point { int x, y; };
Point p1; // OK, 'struct' লাগে না
Point p2; // typedef struct Point Point; ইমপ্লিসিট
সাবধানতা: Forward Declaration
typedef-কে ফরওয়ার্ড ডিক্লেয়ার করা যায় না। তাই যদি typedef struct ব্যবহার করেন, তাহলে সেই টাইপ ব্যবহার করার আগে অবশ্যই টাইপের ডেফিনিশনवाले হেডার ফাইল #include করতে হবে।
সারসংক্ষেপ: C++-এ শুধু struct Name { ... }; লিখলেই চলে। typedef যোগ করার কোনো প্রয়োজন নেই, বরং কখনো কখনো এটি ফরওয়ার্ড ডিক্লেয়ারেশন বাধা দিতে পারে।