"এটি কী করে?" এর উত্তর না দিয়ে আমি উত্তর দিচ্ছি "আমি কী চাই তা কীভাবে করব?" এখানে 5 ধরণের ইনলাইনিং রয়েছে, সমস্ত জিএনইউ সি 89, স্ট্যান্ডার্ড সি 99 এবং সি ++ এ উপলব্ধ:
সর্বদা ইনলাইন, যদি না ঠিকানা না নেওয়া হয়
যোগ __attribute__((always_inline))
কোনো ঘোষণা, তারপর তার ঠিকানা সম্ভাবনা নেওয়া হচ্ছে হ্যান্ডেল করতে ক্ষেত্রেই নিচের ব্যবহার করুন।
আপনার সম্ভবত শব্দার্থবিজ্ঞানের প্রয়োজন না থাকলে আপনার সম্ভবত এটি কখনই ব্যবহার করা উচিত নয় (যেমন কোনও নির্দিষ্ট উপায়ে সমাবেশকে প্রভাবিত করতে, বা ব্যবহার করার জন্য alloca
)। সংকলকটি সাধারণত এটির পক্ষে মূল্যবান কিনা তা আপনার চেয়ে ভাল।
ইনলাইন করুন এবং একটি দুর্বল প্রতীক নির্গমন করুন (যেমন সি ++, ওরফে "কেবল এটি কাজ করুন")
__attribute__((weak))
void foo(void);
inline void foo(void) { ... }
নোট করুন যে এটি একই কোডের একগুচ্ছ চারপাশে পড়ে আছে এবং লিঙ্কারটি নির্বিচারে একটি বাছাই করে।
ইনলাইন, তবে কখনই কোনও চিহ্ন প্রকাশ করবেন না (বাহ্যিক রেফারেন্সগুলি রেখে)
__attribute__((gnu_inline))
extern inline void foo(void) { ... }
সর্বদা নির্গত (এক টিউ এর জন্য, পূর্ববর্তী সমাধানের জন্য)
ইঙ্গিতযুক্ত সংস্করণটি সি ++ তে একটি দুর্বল প্রতীক প্রকাশ করে তবে সি এর উভয় উপভাষায় একটি শক্তিশালী প্রতীক:
void foo(void);
inline void foo(void) { ... }
অথবা আপনি ইঙ্গিত ছাড়াই এটি করতে পারেন, যা উভয় ভাষায়ই একটি শক্তিশালী প্রতীক প্রকাশ করে:
void foo(void) { ... }
সাধারণত আপনি যখন জানেন যে আপনি সংজ্ঞা প্রদান করছেন তখন আপনার টিউ কী ভাষা হয় এবং সম্ভবত খুব বেশি ইনলাইনিংয়ের প্রয়োজন হয় না।
প্রতিটি টিইউতে ইনলাইন এবং নির্গত হয়
static inline void foo(void) { ... }
এই ব্যতীত অন্যগুলির জন্য static
, আপনি void foo(void)
উপরে একটি ঘোষণা যুক্ত করতে পারেন । এটি পরিষ্কার শিরোনাম লেখার "সেরা অনুশীলন", তারপরে #include
ইনলাইন সংজ্ঞা সহ একটি পৃথক ফাইল তৈরি করতে সহায়তা করে। তারপরে, যদি সি-স্টাইলের ইনলাইনগুলি ব্যবহার করা হয়, তবে #define
কোনও ম্যাক্রো আলাদাভাবে আলাদা আলাদা আলাদা আলাদা সংজ্ঞা সরবরাহ করতে একটি উত্সর্গীকৃত টিইউতে আলাদা করে দেয়।
extern "C"
হেডারটি সি এবং সি ++ উভয় থেকেই ব্যবহার করা যেতে পারে তা ভুলে যাবেন না !