কখনও কখনও লিনাক্স কার্নেলের কিছু আর্কিটেকচার নির্দিষ্ট ফাংশন সরবরাহ করে না, যেমন arch_atomic_sub_and_test
। এটি অন্যান্য আর্কিটেকচারগুলি না ভেঙে শর্তসাপেক্ষে এই ফাংশনগুলি সরবরাহ করার অনুমতি দেয়।
#define
সঙ্গে ফাংশন অস্তিত্ব জন্য পরীক্ষার আপনি করতে পারবেন #ifdef
:
#ifdef arch_atomic_sub_and_test
// use arch_atomic_sub_and_test
#else
// some other equivalent code
#endif
অথবা যদি ফাংশনটি উপলভ্য না হয় তবে এটির ত্রুটিযুক্ত হতে ব্যবহার করা যেতে পারে:
#ifndef arch_atomic_sub_and_test
# error "arch_atomic_sub_and_test not available"
#endif
উদাহরণস্বরূপ, এটি লিনাক্স কার্নেলে (থেকে include/asm-generic/atomic-instrumented.h
) এটি ব্যবহার করা হয় :
#if defined(arch_atomic_sub_and_test)
static inline bool
atomic_sub_and_test(int i, atomic_t *v)
{
kasan_check_write(v, sizeof(*v));
return arch_atomic_sub_and_test(i, v);
}
#define atomic_sub_and_test atomic_sub_and_test
#endif