সি (এএনএসআই, সি 99, ইত্যাদি) এ স্ট্রাইকগুলি তাদের নিজস্ব জায়গাতেই থাকে। একটি লিঙ্কযুক্ত তালিকার কাঠামো এর মতো দেখতে পারে:
struct my_buffer_type {
struct my_buffer_type * next;
struct my_buffer_type * prev;
void * data;
};
বেশিরভাগ সি প্রোগ্রামারদের নিচের মতো স্ট্রাক্টগুলি স্বয়ংক্রিয়ভাবে টাইপ করা একেবারেই স্বাভাবিক বলে মনে হয়
typedef struct tag_buffer_type {
struct tag_buffer_type * next;
struct tag_buffer_type * prev;
void * data;
} my_buffer_type;
এবং তারপরে স্ট্রাক্টটিকে একটি সাধারণ টাইপের মতো রেফারেন্স করুন, যেমন get_next_element(my_buffer_type * ptr)
।
এখন আমার প্রশ্ন হল: এর কোনও নির্দিষ্ট কারণ আছে কি?
উইকিপিডিয়া বলেছে http://en.wikedia.org/wiki/Typedef#Usage_concerns
কিছু লোক টাইপডেফের ব্যাপক ব্যবহারের বিরোধী। বেশিরভাগ আর্গুমেন্ট এই ধারণাটিকে কেন্দ্র করে যে টাইপিডেফগুলি কেবল একটি ভেরিয়েবলের আসল ডেটা টাইপ লুকায়। উদাহরণস্বরূপ, লিনাক্স কার্নেল হ্যাকার এবং ডকুমেন্টমেনার গ্রেগ ক্রোয়া-হার্টম্যান ফাংশন প্রোটোটাইপ ঘোষণা ব্যতীত অন্য কোনও কিছুর জন্য তাদের ব্যবহারকে নিরুৎসাহিত করে। তিনি যুক্তি দিয়েছিলেন যে এই অনুশীলনটি কেবল অযৌক্তিকভাবে কোডকেই অবিচ্ছিন্ন করে না, এটি প্রোগ্রামাররা দুর্ঘটনাক্রমে বড় কাঠামোগুলি তাদের সাধারণ ধরণের বলে ভেবে ভুলভাবে ব্যবহার করতেও পারে [[৪]
আবার কেউ কেউ যুক্তি দেয় যে টাইপডেফসের ব্যবহার কোড বজায় রাখা সহজ করে তুলতে পারে। কে অ্যান্ড আর বলেছে যে টাইপেফ ব্যবহারের দুটি কারণ রয়েছে। প্রথমত, এটি কোনও প্রোগ্রামকে আরও বহনযোগ্য করে তোলার একটি উপায় সরবরাহ করে। প্রোগ্রামের উত্স ফাইলগুলির জুড়ে এটি যে কোনও জায়গায় পরিবর্তিত হওয়ার পরিবর্তে কেবলমাত্র একটি একক টাইপডেফ বিবৃতি পরিবর্তন করতে হবে। দ্বিতীয়ত, একটি টাইপিডেফ একটি জটিল ঘোষণা বুঝতে সহজতর করতে পারে।
আমি ব্যক্তিগতভাবে আশ্চর্য হয়েছি যে struct
কখনও কখনও টাইপডেফ স্ট্রাক্ট ব্যবহার না করার জন্য পৃথক নেমস্পেস থাকার যথেষ্ট সুবিধা নেই এবং যেহেতু চারপাশে বেশ কয়েকটি সি প্রোগ্রামিং সংস্কৃতি রয়েছে (উইন্ডোজ সি প্রোগ্রামিংয়ে আমার অভিজ্ঞতায় লিনাক্স সি প্রোগ্রামিংয়ের চেয়ে আলাদা traditionsতিহ্য রয়েছে) যদি অন্য থাকে traditionsতিহ্যগুলি যে সম্পর্কে আমি অবগত নই।
তারপরে আমি historicalতিহাসিক বিবেচনায় আগ্রহী (পূর্বসূরি, সি এর প্রথম সংস্করণ)।
typedef
হ'ল ভেরিয়েবলের আসল প্রকারটি লুকানো।time_t
উদাহরণ হিসাবে ধরুন : লোকেরা যদি অন্তর্নিহিত পূর্ণসংখ্যার প্রকারটি ব্যবহার করে ঘুরে বেড়ায়, তবে বাস্তবায়নের পরিবর্তনটি ছিল 2038 সালে প্রয়োজনীয় কোডটি ভয়াবহভাবে ভেঙে দেবে। - যদি লোকেরা বুঝতে না পেরে স্ট্রাকচার ব্যবহার করে থাকে তবে এটি প্রোগ্রামারটিতে ব্যর্থতা, নির্মাণে নয়।