.Inl ফাইলটিতে ঘোষণার সুবিধা কী কী? আমার কখন এটি ব্যবহার করা দরকার?
.Inl ফাইলটিতে ঘোষণার সুবিধা কী কী? আমার কখন এটি ব্যবহার করা দরকার?
উত্তর:
.inlফাইলগুলি কখনই বাধ্যতামূলক হয় না এবং সংকলকটির কোনও বিশেষ তাত্পর্য নেই। এটি আপনার কোডকে কাঠামোগত করার একটি উপায় যা এটি পড়তে পারে এমন মানুষকে একটি ইঙ্গিত সরবরাহ করে।
আমি .inlদুটি ক্ষেত্রে ফাইল ব্যবহার করি :
উভয় ক্ষেত্রেই, আমি ফাংশন ঘোষণা একটি শিরোলেখ ফাইল যা অন্যান্য ফাইল দ্বারা অন্তর্ভুক্ত করা হয়, তারপরে আমি করা ফাইল হেডার ফাইল নীচে।#include.inl
আমি এটি পছন্দ করি কারণ এটি বাস্তবায়ন থেকে ইন্টারফেসকে পৃথক করে এবং শিরোনাম ফাইলটি পড়ার জন্য কিছুটা সহজ করে। আপনি যদি প্রয়োগের বিশদটি সম্পর্কে যত্নশীল হন তবে আপনি .inlফাইলটি খুলতে এবং এটি পড়তে পারেন। আপনি যদি না করেন, আপনার দরকার নেই।
.tccটেম্পলেট বাস্তবায়ন ফাইলগুলির জন্য ব্যবহার করে।
glmনিকমিয়ার আপনি উপরে উল্লিখিতভাবে ঠিক একইভাবে .hpp এবং .inl ব্যবহার করেন। জেনে রাখা ভাল, দুর্দান্ত উত্তরের জন্য ধন্যবাদ :)
নিক মায়ার ঠিক বলেছেন: সংকলকটি আপনি যে ফাইলটি অন্তর্ভুক্ত করছেন তার সম্প্রসারণের বিষয়ে চিন্তা করে না, সুতরাং ".h", ".এইচপি", ".এইচএক্সএক্স", ".এইচএইচ", ".ইনল", "। ইনক" ইত্যাদি ফাইলগুলি কী ধারণ করে তা বোঝাতে এটি একটি সাধারণ কনভেনশন।
সর্বোত্তম উদাহরণ হ'ল এসটিএল হেডার ফাইলগুলি যার কোনও এক্সটেনশন নেই।
সাধারণত, ".inl" ফাইলগুলিতে ইনলাইন কোড থাকে (সুতরাং ".inl" এক্সটেনশন)।
যখন আপনার শিরোনাম কোডের মধ্যে নির্ভরতা চক্র থাকে তখন এই ফাইলগুলি ".inl" ফাইলগুলি একটি প্রয়োজনীয়তা ।
উদাহরণ স্বরূপ:
// A.hpp
struct A
{
void doSomethingElse()
{
// Etc.
}
void doSomething(B & b)
{
b.doSomethingElse() ;
}
} ;
এবং:
// B.hpp
struct B
{
void doSomethingElse()
{
// Etc.
}
void doSomething(A & a)
{
a.doSomethingElse() ;
}
} ;
ফরওয়ার্ড ডিক্লেয়ারেশন ব্যবহার করে আপনার এটি সংকলন করার কোনও উপায় নেই।
সমাধানটি হ'ল সংজ্ঞা এবং প্রয়োগকে দুই ধরণের শিরোলেখ ফাইলগুলিতে বিভক্ত করা:
hpp শিরোনাম ঘোষণা / সংজ্ঞা জন্যinl শিরোনাম বাস্তবায়নের জন্যযা নিম্নলিখিত উদাহরণে বিভক্ত হয়:
// A.hpp
struct B ;
struct A
{
void doSomethingElse() ;
void doSomething(B & b) ;
} ;
এবং:
// A.inl
#include <A.hpp>
#include <B.hpp>
inline void A::doSomethingElse()
{
// Etc.
}
inline void A::doSomething(B & b)
{
b.doSomethingElse() ;
}
এবং:
// B.hpp
struct A ;
struct B
{
void doSomethingElse() ;
void doSomething(A & a) ;
} ;
এবং:
// B.INL
#include <B.hpp>
#include <A.hpp>
inline void B::doSomethingElse()
{
// Etc.
}
inline void B::doSomething(A & a)
{
a.doSomethingElse() ;
}
এইভাবে, আপনি আপনার নিজস্ব উত্সে আপনার প্রয়োজনীয় ".inl" ফাইলটি অন্তর্ভুক্ত করতে পারেন এবং এটি কার্যকর হবে।
আবার অন্তর্ভুক্ত ফাইলগুলির প্রত্যয় নামগুলি সত্যই গুরুত্বপূর্ণ নয়, কেবল তাদের ব্যবহার।
If the function were not inline, you would you standard .cpp file for the implementation part?সম্ভবত: টেমপ্লেটগুলি কোডের উদাহরণ যা সাধারণত .CPP ফাইলগুলিতে লুকানো যায় না, সুতরাং সেই ক্ষেত্রে, .INL ফাইলটি বাধ্যতামূলক হবে।
যেহেতু অন্য কেউ এটি উল্লেখ করেননি:
আপনার ইনলাইন ফাংশনগুলি সংরক্ষণ করতে .inl ফাইলগুলির ব্যবহার কম্পাইলগুলি গতির জন্য কার্যকর হতে পারে।
যদি আপনি কেবলমাত্র ঘোষণাগুলি (। এইচ) অন্তর্ভুক্ত করেন যেখানে আপনার ঘোষণার প্রয়োজন রয়েছে এবং কেবলমাত্র ইনলাইন বাস্তবায়ন (.inl) অন্তর্ভুক্ত করুন যেখানে আপনার প্রয়োজন (যেমন সম্ভবত কেবল .cpp এবং অন্যান্য .inl ফাইলগুলিতে .h এর নয়) রয়েছে তবে এটির একটি থাকতে পারে আপনার শিরোনাম নির্ভরতা উপর উপকারী প্রভাব।
এটি অনেকগুলি ইন্টারেক্টিভ ক্লাস সহ বৃহত্তর প্রকল্পগুলিতে একটি গুরুত্বপূর্ণ জয় হতে পারে।
আমার অভিজ্ঞতায় .inl ফাইলগুলি ইনলাইন ফাংশনগুলি সংজ্ঞায়িত করতে ব্যবহৃত হয়। যখন তারা একটি .inl ফাইলে থাকে তখন ফাইলটি ইনলাইন ফাংশনগুলি পেতে এবং একটি নিয়মিত ফাংশন সংজ্ঞা পেতে .c ফাইলে অন্তর্ভুক্ত করা যায়।
এইভাবে একই উত্সটি আরও সহজেই কমপাইলারগুলির সাথে কাজ করতে পারে যার ইনলাইন ফাংশন সমর্থন নেই এবং সেইসাথে সংকলকগুলিও নেই।
এগুলি সাধারণত সরল সি কোড সহ ব্যবহৃত হয়, প্রায়শই সি ++ কোডের সাথে নয় সমস্ত সি ++ সংকলক ইনলাইন ফাংশন সমর্থন করে।
#define inline staticএবং শিরোনামে আপনার ইনলাইন কার্যগুলি সংজ্ঞায়িত করতে চাই ।
আমি বিশ্বাস করি এটি একটি "শিরোলেখ" ফাইলটির নামকরণের কনভেনশনে ইনলাইন কোড অন্তর্ভুক্ত রয়েছে। এটি যাতে .h ফাইলগুলির সংজ্ঞা এবং .inl ফাইলগুলিতে ইনলাইন কোড থাকতে পারে যা টেমপ্লেটগুলির জন্য প্রয়োজনীয়।
আমি বিশ্বাস করি না যে ফাইলটির উদ্দেশ্য পরিষ্কার করার জন্য নামকরণের কনভেনশন ছাড়া এর চেয়ে আরও কিছু আছে